代码 阅读器:SI (Source Insight)、vscode(Visual Studio Code)、code-server、Visual Studio、OpenGrok

代码阅读对大部分开发人员来说都不会陌生。无论是刚开始学习代码的小白还是久经沙场的代码大神,不管是学习优秀的开源项目还是做老项目的重构,代码阅读都是必备技能之一。高效的梳理代码能够显著的提高开发工作效率。

1、IDE (集成开发环境) 阅读

IDE(Integrated Development Environment) 应该是每个技术人员每天工作中接触时间最长的一类软件,尽管不同语言有不同的IDE,但殊途同归,IDE的核心功能是用来做代码编辑,很多IDE也在代码编辑层面做了性能上的优化。尽管各类IDE都通过各种方式实现了代码阅读以及代码梳理的功能,但由于其作为编辑器的本质属性,从代码阅读的角度来讲面对很多大型项目易用性和效率比较低,难以快速阅读代码。

尽管 IDE 能够覆盖日常工作中的大部分场景,但面对大型项目的分析(如Android源码或者linux源码)就捉襟见肘,其效率及易用性较低的原因主要有以下几点:

  1. 绝大多数IDE对代码的分析速度较慢。由于大多数IDE在代码编辑层面做了优化,加载代码的过程需要消耗更多的资源(代码之间的关系识别等)。同时,在加载大型代码时,会造成严重的卡顿,影响用户体验;
  2. 针对代码阅读,很多IDE要求对代码进行编译,否则就会产生大量“飘红”,无法进行代码阅读。一个大型项目往往需要非常久的编译时间,并且环境配置的难度极大,降低了代码阅读的效率;
  3. 常用的IDE往往针对某种语言进行了特化(当然也有类似CLion的跨平台IDE),对其他语言的支持程度不高,如果项目中存在跨平台的问题往往难以通过单一IDE进行代码阅读。

IDE 示例:Android Studio 、VS、IntelliJ IDEA、PyCharm、Sublime Text、Eclipse、MyEclipse

visual studio code ( VS code )

https://code.visualstudio.com/

微软的 VSCode 面世后,很多开源作者陆续推出了代码阅读的魔法级插件(CodeRunner,PartialDiff,TODOTree等等)以提升代码阅读体验,在各路大神的努力下,IDE阅读法终将成为最好的代码梳理方法。

visual studio

https://visualstudio.microsoft.com/zh-hans/downloads/

宇宙最强 IDE,没有之一。但是占用磁盘空间超大(几十G)。

Geany

https://geany.org/

Geany 是一个功能强大、稳定且轻量级的程序文本编辑器,它提供了大量有用的功能,可以在 Linux、Windows 和 macOS 上运行,被翻译成 40 多种语言,并内置对 50 多种编程语言的支持。

2、SI (Source Insight)

官方网站(地址:https://www.sourceinsight.com/

linux下:wine + si

SI 简介

SI (Source Insight) 的出现让很多开发人员第一次感受到了代码阅读的快乐(相信很多Android开发者都用这个神器阅读过Android源码)。如果说 IDE 是专注于代码编写的平台,那么 SI 就是专注于代码分析的神器。SI为开发人员提供了以下核心功能:

  1. 快速的代码分析:SI 能够通过内置引擎快速分析代码,并形成继承树以及函数调用树,占用资源量极小。
  2. 准确的代码查找:SI支持快速查看函数和变量使用位置的功能,几乎立即自动显示对函数、变量、类等的引用。
  3. 多种语言支持:Source Insight 内置了针对 C/C++、C#、Java、Objective-C 等的动态分析。
  4. SI (Source Insight) 比 IDE 更快、更便捷。SI 有强大的查看定义,查看调用,查看引用功能以及方便的 Context Window 上下文显示。
  5. Relation Window (关系窗口) 显示了符号之间的有趣关系。它在自己的面板窗口中在后台运行,并跟踪您选择的符号。它可以显示类层次结构、调用树、引用树等。

SI 几乎能够完成代码链路分析中的全部工作,但它也有着不容忽视的缺点:

  1. SI 是收费软件。
  2. SI 仅支持 Windows 平台,Mac 平台想要使用必须安装虚拟机。
  3. 界面样式较老且没有官方中文插件。
  4. 不跨平台:linux下只能在 Wine下运行 Source Insight,不过偶尔会发生崩溃。
  5. 支持语言少:查看支持的语言:菜单栏 “选项” > “首选项”。单击 “语言” 选项卡。即可看到支持的语言。

SI 安装

source insight 4.0 破解版:https://blog.csdn.net/ych9527/article/details/114324451

  • 1. 首先安装 sourceinsight_4.0.86.0-setup.exe
  • 2. 安装完成后,使用 sourceinsight4.exe 替换安装目录中的 sourceinsight4.exe
  • 3. 打开替换后的 sourceinsight4.exe,选择 import a new license file,然后导入si4.pediy.lic

打开 source insight 界面如图:

定制 语言 支持

自定义语言文件为非内置语言的源代码提供语法格式化和一些解析支持。

支持的语言:https://www.sourceinsight.com/download/custom-languages/

在选择的语言文件上右键 ---> 链接另存为,即可下载对应的语言文件。

扩展名为 .xclf 的文件用于 Source Insight version 4 及更新版本。
扩展名为 .clf 的文件用于版本 3.x。

将自定义语言文件导入 Source Insight,操作步骤:

  • 1. 选择“选项”>“首选项”。单击“语言”选项卡。
  • 2. 单击“导入”按钮。选择并加载自定义语言文件(v3 的扩展名为 .clf,v4 的扩展名为 .xclf)。现在,您应该在语言列表中看到新语言。
  • 3. 单击“文件类型”按钮以打开“文件类型选项”对话框。
  • 4. 如果您尚未为语言文件类型创建文件类型,则需要立即创建一个。如果已创建文件类型,请在列表中选择该文件类型,然后转到步骤 6。
  • 5. 单击“添加类型”按钮以创建新的文件类型。为其指定一个描述文件类型的名称。例如,“蚂蚁文件”。单击“确定”,然后使用通配符填写文件筛选器文本框。例如,“*.ant”。
  • 6. 在“文件类型选项”对话框的“分析”部分中,在语言下拉列表中选择新导入的语言。这就是将您的文件类型与自定义语言相关联的原因。
  • 7. 单击“关闭”按钮以关闭“文件类型选项”。然后单击“确定”关闭“首选项”对话框。

source Insight添加定制语言支持:https://blog.csdn.net/weixin_39510813/article/details/90814602

常用 设置

1. 括号配对高亮:
“在前括号左侧,后括号左侧” 双击鼠标左键,可以选定匹配括号和其中内容(<>,(),L{R},[]之间)

2. 让{ 和 } 不缩进:
Options -> Document Options -> Auto Indenting -> Auto Indent Type 选 Simple

还有:让{ 和 } 不缩进: options->document options->auto indent 去掉indent Open Brace和Indent Close Brace。 (不好使,括号无法配对对齐!)

3. 添加文件类型
用户可以定义自己的类型,Options->Document Options->add type,定义文件类型名以及文件名后缀。
勾选include when adding to projects在添加目录下文件到工程是该类文件就会添加进SI的工程。
如果需要将所有文件添加进SI的工程,可以定义一种文件类型*.*。

如: 

*.java;*.jav;*.xml;*.json,*.gradle,*.bat,*.pro,*.mk,*.aidl,*.so, *.jpg,*.png,*.svg,*.webp,*.html,*.htm,*.properties,*.jar,*.aar,*.bin,*.

4. 恢复 ctrl+a 的全选功能
Options -> Key Assignments:通过关键词save 找到save all,更改为ctrl+shift+a,通过关键词select找到select all,更改为ctrl +a

5. 设置背景色:
Options->preference->color->windows background设置背景色(护眼色:85,90,205)

6. 字符大小不一:
方法1:选上"view --> draft view", 就可以让每个字符的宽度一致了。快捷键是 "Alt + F12" 

方法2:解决中文注释字体间距太大:

(1).Options->Style Properties
(2). 在左边Style Name下找到Comment Multi Line和Comment.在其右边对应的Font属性框下的Font Name中选“Pick...” 设置为宋体、常规、小四。确定,退回Style Properties界面,Size设为10。最后设置Clolors框下Foreground,点“Pick...”选择一种自己喜欢的颜色就OK了

注:以上方法1为通用设置,方法2中可以设置注释字体以及字体大小!

7. 删除注释时半个汉字问题(删除一个汉字,汉字没有了,但会多出一个问号?)

方法:

① 将 SuperBackspace.em 复制到 Source Insight安装目录;
② Project→Open Project,打开Base项目;
③ 将复制过去的SuperBackspace.em添加入Base项目;
④ 重启SourceInsight;
⑤ Options→Key Assignments,将Macro: SuperBackspace绑定到BackSpace键;
⑥ Enjoy!!

SuperBackspace.em 的源码在博文最后面,复制保存为SuperBackspace.em即可,或者可以在这里直接下载:http://pan.baidu.com/share/link?shareid=101784&uk=3204866771

9. 解决TAB键缩进问题
Options-> Document Options里面的右下角Editing Options栏里,把Expand tabs勾起来,然后确定。OK,现在TAB键的缩进和四个空格的缩进在SIS里面看起来就对齐
(Linux下TAB是8个空格长度,这样设置可以让TAB和4个空格保持一致!)

10. SI 中文乱码的问题

source insight中文注释乱码问题:http://blog.csdn.net/ccf19881030/article/details/8987759

代替 SI 原有的 Backspace

*===============  SuperBackspace.em ===================
* SuperBackspace Version 0.1beta
*
* 代替SourceInsight原有的Backspace功能(希望如此)
* 增加了对双字节汉字的支持,在删除汉字的时候也能同时删除汉字的高字节而缓解半个汉字问题
* 能够对光标在汉字中间的情况进行自动修正
*
* 安装:
* ① 复制入SourceInsight安装目录;
* ② Project→Open Project,打开Base项目;
* ③ 将复制过去的SuperBackspace.em添加入Base项目;
* ④ 重启SourceInsight;
* ⑤ Options→Key Assignments,将Macro: SuperBackspace绑定到BackSpace键;
* ⑥ Enjoy!!
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
macro SuperBackspace()
{
hwnd = GetCurrentWnd();
hbuf = GetCurrentBuf();

if (hbuf == 0)
stop; // empty buffer

// get current cursor postion
ipos = GetWndSelIchFirst(hwnd);

// get current line number
ln = GetBufLnCur(hbuf);

if ((GetBufSelText(hbuf) != "") || (GetWndSelLnFirst(hwnd) != GetWndSelLnLast(hwnd))) {
// sth. was selected, del selection
SetBufSelText(hbuf, " "); // stupid & buggy sourceinsight :(
// del the " "
SuperBackspace(1);
stop;
}

// copy current line
text = GetBufLine(hbuf, ln);

// get string length
len = strlen(text);

// if the cursor is at the start of line, combine with prev line
if (ipos == 0 || len == 0) {
if (ln <= 0)
stop; // top of file
ln = ln - 1; // do not use "ln--" for compatibility with older versions
prevline = GetBufLine(hbuf, ln);
prevlen = strlen(prevline);
// combine two lines
text = cat(prevline, text);
// del two lines
DelBufLine(hbuf, ln);
DelBufLine(hbuf, ln);
// insert the combined one
InsBufLine(hbuf, ln, text);
// set the cursor position
SetBufIns(hbuf, ln, prevlen);
stop;
}

num = 1; // del one char
if (ipos >= 1) {
// process Chinese character
i = ipos;
count = 0;
while (AsciiFromChar(text[i - 1]) >= 160) {
i = i - 1;
count = count + 1;
if (i == 0)
break;
}
if (count > 0) {
// I think it might be a two-byte character
num = 2;
// This idiot does not support mod and bitwise operators
if ((count / 2 * 2 != count) && (ipos < len))
ipos = ipos + 1; // adjust cursor position
}
}

// keeping safe
if (ipos - num < 0)
num = ipos;

// del char(s)
text = cat(strmid(text, 0, ipos - num), strmid(text, ipos, len));
DelBufLine(hbuf, ln);
InsBufLine(hbuf, ln, text);
SetBufIns(hbuf, ln, ipos - num);
stop;
}

*========== SuperBackspace.em ================= 

SI 常用功能

用户手册:https://www.sourceinsight.com/doc/v4/userguide/index.html

对 C/C++、C#、Objective-C++、Java 等的语言解析支持
始终保持最新的符号定义信息
快速访问所有符号和文件
调用图和类树图
上下文相关动态类型解析
在上下文窗口中自动显示声明
语法格式 - 类似于语法着色,但更多
每个文件的符号窗口
上下文相关智能重命名
快速查找引用
文件和目录比较 (diff)。
折叠代码块
混合语言编辑
代码美化器
视觉主题
概述 滚动条和增强的滚动条
多种布局
项目范围的关键字搜索
自动完成
项目定位
代码片段
书签
备份文件管理
快速的项目范围搜索和替换,以及参考查找
具有多个视图的项目窗口
与外部编译器和工具集成
用于存储剪贴板和样板代码的剪辑窗口
两级线修正标记和选择性线恢复
可扩展文件类型和语言
源导出为 HTML
支持高 DPI 显示
对远程终端服务器会话的特殊支持
从其他源或程序集导入外部符号
项目的主文件列表,以便团队成员可以共享文件列表

显示行号

全工程替换某个字符

  • 在 source insight 全工程替换某个字符方法:Search ---> Replace Files
  • Replace  是只在打开的文件中替换

搜索、搜索文件、搜索项目

Ctrl + F           在所在的文件中进行查找
Ctrl + Shift + F   弹出一个窗口,在制定的文件夹以及子目录中搜索
搜索项目           在全工程所有文件中查找关键字
F3                 查找上一个,向后搜索
F4                 查找下一个,向前搜索
Shift+F3           向后搜索,选中的的单词
Shift+F4           向前搜索,选中的的单词

同步

在编辑区域中,键盘按下Ctrl,用鼠标单击变量或方法时,会跳到变量或方法的定义。

如果某个变量或者方法是黑色字体表示的,说明它还没有被定义。

当然有时候也不是因为没定义,需要同步一下,Project ---> Synchronizing Files

查看 定义

选中变量或者方法 ---> 右键 Jump to Definition (跳转到定义,也就是声明)

也可以使用快捷键:"Ctrl+=  或者  Ctrl+单击"

查看 函数体

  • 在函数上 Ctrl+单击 只能查看函数的定义(声明),不能查看 函数体(函数的实现)。要 查看函数体,可以复制函数名,搜索 项目符号,在 上下文窗口 中就可以看到函数体
  • 当在 "项目符号" 中搜索不到时,终极大招:直接 "搜索项目"

查找 引用

  • 选择一个变量或方法 ---> 右键 Lookup References 就可以查找引用。或者 Alt + /

  • 工具栏上有相应的图标进行上一条和下一条的跳转。 
  • Lookup References 弹出的对话框里可以进行查询的选项配置。比如是否大小写敏感,是不查找注释还是只在注释里查找。
  • 另外 Search Method 也可以选是字符串、正则、关键字、还是引用类型。

查找 调用

这个是针对方法的,选中方法名,然后右键 Jump to Caller,如果只有一次调用,则直接跳转,如果多次调用,则显示一个列表框,选择一项就会跳转过去。

SI 快捷键

常用设置和快捷键大全:https://www.cnblogs.com/bluestorm/archive/2012/10/28/2743792.html

Alt + F4           退出程序 
Alt+F6, Ctrl+F4    关闭窗口
Ctrl+Tab, Ctrl+Shift+Tab            最后一个窗口 
Ctrl+=, Ctrl+选中单击, Ctrl+双击    跳到定义(也就是声明)
Alt + /       查看引用
Alt+,         跳转回退
Alt+.         跳转前进
Alt + F12     可以切换,让字符宽度变得一致,或者是大小不同地显示。
Shift + F8    高亮当前光标所在的单词
Ctrl + O      搜索文件,找到回车打开,找不到ESC退出
Alt +,        后退
Alt+.         前进
小键盘 +      到下一个函数
小键盘 -      上一个函数

F5, Ctrl+G    跳转到某一行
F7, Alt+G     查询 symbols。打开 Symbol 窗口,快速浏览工程内标识定义
F8            查询本地 symbols。(光标放到一个变量/函数等,那么列出本文件该变量/函数等的信息) 
Alt+0         跳到基本类型(即跳到原型)
Alt+/, Ctrl+R Click (select)   语法信息(弹出该语法的信息) 
Alt+F8        语法窗口(隐藏/显示语法窗口) 
F9            左边缩进
F10           右边缩进
Ctrl+M        创建或查找书签,方便下次找回此位置

Ctrl + W          关闭文件
Ctrl+Shift +W     关闭所有文件
Ctrl+N            新建
Ctrl+Shift+N      转到下一个文件
Ctrl+O            打开
Ctrl+Shift+O      重新装载文件
Ctrl+Shift+S      另存为
Ctrl+I            插入一行
Ctrl+Enter        插入新行
Ctrl+J            加入一行
Ctrl+Ins          从剪切板粘贴
Ctrl+P            粘贴一行
Ctrl+Y            重复上一个动作
Ctrl+R            重新编号
Ctrl+             重复输入
Ctrl+H            替换
Ctrl+'            智能重命名

重画屏幕 : Ctrl+Alt+Space
完成语法 : Ctrl+E
复制一行 : Ctrl+K
恰好复制该位置右边的该行的字符 : Ctrl+Shift+K
复制到剪贴板 : Ctrl+Del
剪切一行 : Ctrl+U
剪切该位置右边的该行的字符 : Ctrl+;
剪切到剪贴板 : Ctrl+Shift+X
剪切一个字 : Ctrl+,
显示文件状态 : Shift+F10
激活语法窗口 : Alt+L
回到该行的开始 : Home
回到选择的开始 : Ctrl+Alt+[
到块的下面 : Ctrl+Shift+]
到块的上面 : Ctrl+Shift+[
书签 : Ctrl+M
到文件底部 : Ctrl+End, Ctrl+(KeyPad) End
到窗口底部 : (KeyPad) End (小键盘的END)
到一行的尾部 : End
到选择部分的尾部 : Ctrl+Alt+]
后退 : Alt+,, Thumb 1 Click
后退到索引 : Alt+M
向前 : Alt+., Thumb 2 Click
转到下一个修改 : Alt+(KeyPad) +
转到下一个链接 : Shift+F9, Ctrl+Shift+L
回到前一个修改 : Alt+(KeyPad) -
跳到连接(就是语法串口列表的地方) : Ctrl+L
跳到匹配 : Alt+]
下一页 : PgDn, (KeyPad) PgDn
上一页 : PgUp, (KeyPad) PgUp
向上滚动半屏 : Ctrl+PgDn, Ctrl+(KeyPad) PgDn, (KeyPad) *
向下滚动半屏 : Ctrl+PgUp, Ctrl+(KeyPad) PgUp, (KeyPad) /
左滚 : Alt+Left
向上滚动一行 : Alt+Down
向下滚动一行 : Alt+Up
右滚 : Alt+Right
选择一块 : Ctrl+-
选择当前位置的左边一个字符 : Shift+Left
选择当前位置右边一个字符 : Shift+Right
选择一行 : Shift+F6
从当前行其开始向下选择 : Shift+Down
从当前行其开始向上选择 : Shift+Up
选择上页 : Shift+PgDn, Shift+(KeyPad) PgDn
选择下页 : Shift+PgUp, Shift+(KeyPad) PgUp
选择句子(直到遇到一个 . 为止) : Shift+F7, Ctrl+.
从当前位置选择到文件结束 : Ctrl+Shift+End
从当前位置选择到行结束 : Shift+End
从当前位置选择到行的开始 : Shift+Home
从当前位置选择到文件顶部 : Ctrl+Shift+Home
选择一个单词 : Shift+F5
选择左边单词 : Ctrl+Shift+Left
选择右边单词 : Ctrl+Shift+Right
到文件顶部 : Ctrl+Home, Ctrl+(KeyPad) Home
到窗口顶部 : (KeyPad) Home
到单词左边(也就是到一个单词的开始) : Ctrl+Left
到单词右边(到该单词的结束) : Ctrl+Right
排列语法窗口(有三种排列方式分别按1,2,3次) : Alt+F7
移除文件 : Alt+Shift+R
同步文件 : Alt+Shift+S
增量搜索(当用Ctrl + F 搜索,然后按F12就会转到下一个匹配) : F12
替换文件 : Ctrl+Shift+H

doxygen 类的继承关系 生成工具

SI 查看 Linux 源核代码

怎么使用 SI (Source Insight) 查看源码

  • 有一份源码,该要怎么阅读呢?很简单,SI 可以极其方便地将一个源码目录变成 source insight 工程:新建工程 ---> 命名工程 ---> 设置源码目录 ---> 现在就可以去阅读查看源码了。
  • 设置字体背景等:Options->Preferences

在 Project setting 设置 源码路径

添加和移除文件

打开源码文件

查看

3、Visual Studio Code

Microsoft Visual Studio Code 中文手册:https://code.visualstudio.com/docs
官方快捷键大全:https://code.visualstudio.com/docs/customization/keybindings

第一次使用 VS Code 时你应该知道的一切配置:https://zhuanlan.zhihu.com/p/62913725

VS code 提示 "任务仅可在工作区文件夹上可用"https://blog.csdn.net/a123gsfd/article/details/77337707

VS Code 超详细 Python 配置:https://blog.csdn.net/lemonbit/article/details/118077612

VS Code 的介绍

VS Code 的全称是 Visual Studio Code,是一款开源的、免费的、跨平台的、高性能的、轻量级的代码编辑器。它在性能、语言支持、开源社区方面,都做得很不错。

微软有两种软件:一种是 VS Code,一种是其他软件。

IDE 和编辑器是有区别的:

  • IDE(Integrated Development Environment,集成开发环境):对代码有较好的智能提示和相互跳转,同时侧重于工程项目,对项目的开发、调试工作有较好的图像化界面的支持,因此比较笨重。比如 Eclipse 的定位就是 IDE。
  • 编辑器:要相对轻量许多,侧重于文本的编辑。比如 Sublime Text 的定位就是编辑器。再比如 Windows 系统自带的「记事本」就是最简单的编辑器。

需要注意的是,VS Code 的定位是编辑器,而非 IDE ,但 VS Code 又比一般的编辑器的功能要丰富许多。可以这样理解:VS Code 的体量是介于编辑器和 IDE 之间。

VS Code 的特点

  • VS Code 的使命,是让开发者在编辑器里拥有 IDE 那样的开发体验,比如代码的智能提示、语法检查、图形化的调试工具、插件扩展、版本管理等。
  • 跨平台支持 MacOS、Windows 和 Linux 等多个平台。
  • VS Code 的源代码以 MIT 协议开源。
  • 支持第三方插件,功能强大,生态系统完善。
  • VS Code 自带了 JavaScript、TypeScript 和 Node.js 的支持。也就是说,你在书写 JS 和 TS 时,是自带智能提示的。当然,其他的语言,你可以安装相应的扩展包插件,也会有智能提示。

安装完后默认是英文,在插件仓库里面搜索 Chinese (Simplified) 安装,重启ide即可汉化

让 Vscode 自动识别文件编码的方法如下:

  • 打开文件 ---> 首选项 ---> 设置 ---> 输入Auto Guess Encoding ---> 然后在方框中打上勾号。

主命令框

F1 或者 Ctrl + Shift + P打开命令面板。在打开的输入框内,可以输入任何命令,例如:

  • ​​​按一下 Backspace 会进入到 Ctrl+P 模式
  • 在 Ctrl+P 下输入 > 可以进入 Ctrl+Shift+P 模式

在 Ctrl+P 窗口下还可以:

  • 直接输入文件名,跳转到文件
  • ?  列出当前可执行的动作
  • !  显示 Errors或 Warnings,也可以 Ctrl+Shift+M
  • : 跳转到行数,也可以 Ctrl+G 直接进入
  • @ 跳转到 symbol(搜索变量或者函数),也可以 Ctrl+Shift+O 直接进入
  • @ 根据分类跳转 symbol,查找属性或函数,也可以 Ctrl+Shift+O 后输入:进入
  • # 根据名字查找 symbol,也可以 Ctrl+T
Ctrl + Shift + P,F1显示命令面板 Show Command Palette
Ctrl + P快速打开 Quick Open
Ctrl + ,用户设置 User Settings
Ctrl + K  Ctrl + S设置键盘快捷方式 Keyboard Shortcuts

快捷键

Visual Studio Code 常用快捷键:https://lzw.me/a/vscode-visual-studio-code-shortcut.html
VS Code 快捷键(中英文对照版):https://segmentfault.com/a/1190000007688656
如果看不清可以到官网去查阅:https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf

Visual Studio Code 的快捷键设置是统一管理的,所以你只需要修改一个文件就可以了。Visual Studio Code 有两个比较重要的文件,

  • 一个是 setting.json (基本设置)。【文件】-【首选项】-【设置】
  • 另一个是 keybindings.json(配置快捷键文件)。【文件】-【首选项】-【键盘快捷方式】。

按 F1 ---> 上下键 选择 "键盘快捷方式参考",就可以打开网页看到下图:

同时打开多个窗口(查看多个项目)

  • 打开一个新窗口: Ctrl+Shift+N
  • 关闭窗口: Ctrl+Shift+W

同时打开多个编辑器(查看多个文件)

  • 新建文件 Ctrl+N
  • 历史打开文件之间切换 Ctrl+Tab,Alt+Left,Alt+Right
  • 切出一个新的编辑器(最多3个)Ctrl+\,也可以按住 Ctrl 鼠标点击 Explorer 里的文件名
  • 左中右3个编辑器的快捷键 Ctrl+1 Ctrl+2 Ctrl+3
  • 3个编辑器之间循环切换 Ctrl+`
  • 编辑器换位置,Ctrl+k 然后按 Left 或 Right

格式调整

  • 代码行缩进 Ctrl+[ 、 Ctrl+]
  • Ctrl+C 、 Ctrl+V 复制或剪切当前行/当前选中内容
  • 代码格式化: Shift+Alt+F,或 Ctrl+Shift+P 后输入 format code
  • 上下移动一行: Alt+Up 或 Alt+Down
  • 向上向下复制一行: Shift+Alt+Up 或 Shift+Alt+Down
  • 在当前行下边插入一行 Ctrl+Enter
  • 在当前行上方插入一行 Ctrl+Shift+Enter

光标相关

  • ​移动到行首: Home
  • 移动到行尾: End
  • 移动到文件结尾: Ctrl+End
  • 移动到文件开头: Ctrl+Home
  • 移动到定义处: F12
  • 定义处的缩略图:只看一眼而不跳转过去 Alt+F12
  • 移动到后半个括号: Ctrl+Shift+]
  • 选择从光标到行尾: Shift+End
  • 选择从行首到光标处: Shift+Home
  • 删除光标右侧的所有字: Ctrl+Delete
  • 扩展/缩小选取范围: Shift+Alt+Left 和 Shift+Alt+Right
  • 多行编辑(列编辑):Alt+Shift+鼠标左键,Ctrl+Alt+Down/Up
  • 同时选中所有匹配: Ctrl+Shift+L
  • Ctrl+D 下一个匹配的也被选中 (在 sublime 中是删除当前行,后面自定义快键键中,设置与 Ctrl+Shift+K 互换了)
  • 回退上一个光标操作: Ctrl+U

重构代码

  • 跳转到定义处:F12
  • 定义处缩略图:只看一眼而不跳转过去Alt+F12
  • 列出所有的引用:Shift+F12
  • 同时修改本文件中所有匹配的:Ctrl+F12
  • 重命名:比如要修改一个方法名,可以选中后按F2,输入新的名字,回车,会发现所有的文件都修改过了。
  • 跳转到下一个Error或Warning:当有多个错误时可以按F8逐个跳转
  • 查看 diff: 在explorer里选择文件右键 Set file to compare,然后需要对比的文件上右键选择Compare with 'file_name_you_chose'。

查找替换

  • 查找 Ctrl+F
  • 查找替换 Ctrl+H
  • 整个文件夹中查找 Ctrl+Shift+F
  • 匹配符:

            * 匹配一个或者多个

            ? 匹配任意一个

            ** 匹配任意数量,包括 空

            {} 分组条件 (示例: {**/*.html,**/*.txt} matches all html and txt files)

            [] 定义匹配排列的字符,[0-9] 表示 "匹配0到9任意一个"

Ctrl + F查找 Find
Ctrl + H替换 Replace
F3 / Shift + F3查找下一个/上一个 Find next/previous
Alt + Enter选择查找匹配的所有出现 Select all occurences of Find match
Ctrl + D将选择添加到下一个查找匹配 Add selection to next Find match
Ctrl + K Ctrl + D将最后一个选择移至下一个查找匹配项 Move last selection to next Find match
Alt + C / R / W切换区分大小写/正则表达式/整个词 Toggle case-sensitive / regex / whole word

显示相关

  • 全屏:F11
  • zoomIn / zoomOut:Ctrl + =/Ctrl + -
  • 侧边栏显/隐:Ctrl+B
  • 侧边栏4大功能显示:
    • 显示资源管理器: Ctrl+Shift+E
    • 显示搜索:Ctrl+Shift+F
    • 显示 Git:Ctrl+Shift+G
    • 显示 Debug :Ctrl+Shift+D
  • Show Output:Ctrl+Shift+U
  • 预览 markdown:Ctrl+Shift+V

其他

  • 自动保存:File -> AutoSave ,或者 Ctrl+Shift+P,输入 auto

修改默认快捷键

打开默认键盘快捷方式设置:
File -> Preferences -> Keyboard Shortcuts,或者:Alt+F -> p -> k

修改 keybindings.json

// Place your key bindings in this file to overwrite the defaults
[
    // ctrl+space 被切换输入法快捷键占用
    {
        "key": "ctrl+alt+space",
        "command": "editor.action.triggerSuggest",
        "when": "editorTextFocus"
    },
    // ctrl+d 删除一行
    {
        "key": "ctrl+d",
        "command": "editor.action.deleteLines",
        "when": "editorTextFocus"
    },
    // 与删除一行的快捷键互换
    {
        "key": "ctrl+shift+k",
        "command": "editor.action.addSelectionToNextFindMatch",
        "when": "editorFocus"
    },
    // ctrl+shift+/多行注释
    {
        "key":"ctrl+shift+/",
        "command": "editor.action.blockComment",
        "when": "editorTextFocus"
    },
    // 定制与 sublime 相同的大小写转换快捷键
    editor.action.transformToLowercase
    editor.action.transformToUppercase
    {
        "key": "ctrl+k ctrl+u",
        "command": "editor.action.transformToUppercase"
        "when": "editorTextFocus"
    },
    {
        "key": "ctrl+k ctrl+l",
        "command": "editor.action.transformToLowercase"
        "when": "editorTextFocus"
    }
]

自定义设置参考

vscode 自定义配置参考:

{
    "editor.fontSize": 16,
    "editor.tabSize": 2,
    "editor.fontLigatures": true,
        // 使用等宽字体 Fira Code
    "editor.fontFamily": "Fira Code, 'Noto Sans CJK SC Medium', Consolas, 'Courier New', monospace",
        // 关闭右侧的 minimap
    "editor.minimap.enabled": false,
    "editor.minimap.renderCharacters": false,
    "files.associations": {
        "*.es": "javascript",
        "*.es6": "javascript"
    },
    // 控制编辑器是否应呈现空白字符
    "editor.renderWhitespace": "all",
    // 启用后,将在保存文件时剪裁尾随空格。
    "files.trimTrailingWhitespace": true,
    // File extensions that can be beautified as javascript or JSON.
    "beautify.JSfiles": [
        "",
        "es",
        "es6",
        "js",
        "json",
        "jsbeautifyrc",
        "jshintrc"
    ],
    // 关闭 git 自动刷新、fetch、add 操作
    "git.enableSmartCommit": false,
    "git.enabled": true,
    "git.autorefresh": false,
    "git.autofetch": false,
}

主题及配色方案实时预览

f1 后输入 theme 回车,然后上下键即可预览。

自定义 settings.json

  • User settings 是全局设置,任何vs Code打开的项目都会依此配置。
  • Workspace settings 是本工作区的设置,会覆盖上边的配置。存储在工作区的 .vocode 文件夹下。

几乎所有设定都在 settings.json 里

Visual Studio Code 功能

VS Code 最重要的功能是它的侧边栏,它集成了在编码和重构时会用到的核心功能,你需要的其他任何功能都可以通过安装扩展来满足。

Visual Studio Code 插件

智能感知 IntelliSense

一个非常有用的语法高亮和自动完成功能,提供了基于变量类型、函数定义和导入模块的自动补全功能。https://code.visualstudio.com/docs/editor/intellisense

调试 Debugging

内置调试器可以通过添加断点和观察器进行调试,以帮助你加快编辑,编译等。
默认情况下,它支持 NodeJS ,并且可以调试任何可以被转换为 JavaScript 的语言(愚人码头注:比如,TypeScript 等),但像 C++ 或 Python 这样的其他运行时则需要安装扩展才能进行调试。
https://code.visualstudio.com/Docs/editor/debugging

内置 Git

VS Code 内置了一个 Git GUI,支持最常用 Git 命令,这使得您可以很容易地看到您在项目中所做的更改。

图标

跟主题及配色方案的修改类似,VS Code 也提供了图标主题的修改功能,如下所示:

需要安装插件:直接搜索 icon,可以选择一个安装比较多的。vscode-icons (侧边栏图标插件):可以更换侧边栏中漂亮的图标。

终端命令行工具 Terminal

VS Code 提供了一个功能齐全的集成终端,可以让你选择终端,并且运行常用命令。

前端开发必备插件

  • PostCSS Sorting
  • stylelint
  • stylefmt
  • ESLint
  • javascript standard format
  • beautify
  • Babel ES6/ES7
  • Debugger for Chrome
  • Add jsdoc comments
  • javascript(ES6) code snippets
  • vue
  • weex
  • Reactjs code snippets
  • React Native Tools
  • Npm Intellisense
  • Instant Markdown
  • Markdown Shortcuts
  • TextTransform

实用的 Visual Studio Code 插件:https://www.cnblogs.com/hjpqwer/p/7636643.html

60 个神级 VS Code 插件:https://www.sohu.com/a/528387273_121124359

推 荐 插 件

  • 汉化:安装 Chinese (Simplified) Language Pack for Visual Studio Code 插件,完成后重启 VS Code 即可
  • 背景图片:安装 background 插件,完成后重启编辑器
  • 注释美化:安装 Better Comments 
  • 括号上色:安装 Bracket Pair Colorizer 2 插件(相较于 Bracket Pair Colorizer,Bracket Pair Colorizer 2 的性能更优)。配置的话,可以在settings.json中加上这一行:"bracket-pair-colorizer-2.showBracketsInGutter": true,意思是在行号前显示配对的括号,方便定位。
  • 缩进高亮:高亮显示文本前面的缩进,交替使用四种不同的颜色。安装插件 indent-rainbow
  • SVG 插件:提供语法高亮,自动补全,文档提示,颜色选择,URL 跳转,ID 快速修改,SVG 预览与导出 PNG 等功能。
  • git 可视化:安装 Git Graph 插件,使用快捷键Shift + Alt + G打开 Git Graph 页面。
  • Git 日志:一个强大的 Git 日志管理工具 GitLens — Git supercharged
  • npm 管理:npm 扩展支持运行 package.json 文件中定义的 npm 脚本,并支持根据 package.json 中定义的依赖项验证已安装的模块。
  • 代码运行:安装 Code Runner 后,可直接运行当前文件/当前选中的代码。运行结果会展示在“输出”面板中。在 VS Code 中快速运行代码
  • open in browser:在浏览器中打开页面文件。
  • 绘制流程图:Draw.io Integration 插件将 Draw.io 集成到 VS Code 中。
  • Sublime Keymap (Sublime 键盘快捷键):在安装这个插件和重启 VS Code 之后,将在 VS Code 中导入 Sublime Text 的键盘快捷键。可以通过 VS Code 的强大智能感知来使用熟悉的 Sublime Text 键盘快捷键。
  • Project Manager (项目管理器插件)
  • AutoFileName (文件路径自动补全插件):提供基于你输入的文件路径的自动补全的选项。
  • vscode-icons (侧边栏图标插件):可以更换侧边栏中漂亮的图标。
  • npm Intellisense (npm 模块导入插件):在 import 导入语句中自动完成npm 模块。
  • Document This (JSDoc注释插件):在 TypeScript 和 JavaScript 文件中自动生成详细的 JSDoc 注释。

code-server ( vscode网页版 )

网页版的 vscode ,名字是 code-server。对有频繁切换电脑写代码的同学,网页版vscode无疑是绝佳的选择,使用姿势和桌面版基本无差别,无需安装环境,任何电脑只要打开网页登录即可开始写代码。必要时一头钻进网吧,即可处理紧急问题。

code-server 演示图片

部署 code-server (vscode网页版)

https://blog.csdn.net/weixin_41521681/article/details/126535422

官网安装文档

https://coder.com/docs/code-server/latest/install

4、Visual Studio

官网 Visual Studio IDE 教程

官网文档:https://learn.microsoft.com/zh-cn/visualstudio/ide/quickstart-ide-orientation

玩转 Visual Studio

Visual Studio 插件

所谓工欲善其事必先利其器,一些优秀的 Visual Studio 扩展插件能给我们打码带来效率上的提升,纯净的VisualStudio通常需要比较深厚的编程功底才能驾驭,像博主这样的菜鸡,就只能依靠一些优秀的扩展插件来解决日常自动写代码以及写出好代码了。

下载 插件

方法 1:通过 VS 联机库 安装扩展

  • 1. 在VS的菜单栏,点击 扩展 -> 管理扩展 ,打开扩展管理器
  • 2. 点击 联机 – visual studio marketplace
  • 3. 查找你需要的扩展,并点击 下载,等待安装完成。

方法 2:下载扩展文件的安装

打开微软VS扩展库:Extensions for Visual Studio family of products | Visual Studio Marketplace

搜索 插件,在下载页面 点击下载,一般下载到是 vsix 文件,比如 CodeMaid_v11.0.183.vsix,双击 下载的文件 运行,即可安装。安装完成后,重启 visual studio。

管理 VS 的扩展

  • 1. 在VS的菜单栏,点击 工具 - 扩展和更新 ,打开扩展管理器
  • 2. 点击 已安装 – 全部
  • 3. 查找你需要的扩展,可选择禁用或卸载。重启VS后生效。

插件 推荐

Visual Studio 实用插件:https://www.cnblogs.com/Can-daydayup/p/17694603.html

  • ReSharper(付费)
  • GitHub Copilot(付费)
  • CodeMaid(免费)
  • CSharpier(免费)
  • Visual Studio Theme Pack(免费)
  • Indent Guides(免费)
  • Markdown Editor(免费)
  • HTML Snippet Pack(免费)
  • Ozcode(付费)
  • Live Share(免费)
  • CodeRush(免费)
  • Codist(免费)
  • EF Core Power Tools(免费)
  • Visual Assist(付费)
  • Viasfora(免费)
  • SQL Search(免费)
  • Web Essentials(免费)
  • Supercharger(免费)

有的插件可能已经改名:https://zhuanlan.zhihu.com/p/265287451

  • ReSharper
  • 神级调试器 OzCode
  • CodeMaid
  • ProductivityPowerTools
  • 数据库建模神器 Devart Entity Developer
  • ClaudiaIDE,为编辑器窗口插入背景图片
  • Colorful-IDE  基于开源项目“ ClaudiaIDE”
  • VSOutput
  • Output enhancer  调试bug的时候,不同的文字颜色,有利于快速识别
  • Viasfora 为代码增加彩虹括号和配色增强
  • Experimental Tools,增强工具
  • Highlight all occurrences of selected word++,匹配选中高亮显示
  • BundlerMinifier,静态资源最小化打包工具
  • Code Metrices,代码复杂度评估插件
  • NuPack,nuget包打包工具
  • WebEssentials,前端工具集

Visual Studio 安装 VisualGDB

Visual Studio 安装 VisualGDB:https://blog.csdn.net/spacesix/article/details/130498926

安装 VisualGDB 6.0,打开VS验证是否注册成功,注册成功就不会出现让购买或者试用的窗口。

VisualGDB 是 Visual Studio 的一个非常强大的扩展,它允许您调试或调试嵌入式系统。这个程序有一个非常有吸引力的用户界面,它具有许多用于调试或调试代码的功能。VisualGDB 还有一个向导,可以帮助您调试程序并为您提供强大的指南。此外,该程序还有许多其他功能,分为常见功能、高级功能、可用性功能、Linux 功能、Android 功能等类别,每个功能都已在“功能和功能”部分为您列出。VisualGDB 使使用 Visual Studio 进行跨平台开发变得简单和舒适:

VisualGDB:https://visualgdb.com/download/

使用 VisualGDB 调试 Linux 程序

https://zhuanlan.zhihu.com/p/58920282

5、开源工具 OpenGrok

OpenGrok 官网:https://oracle.github.io/opengrok/

github:https://github.com/oracle/opengrok

OpenGrok 是一款用 Java 编写的高效源代码搜索和交叉引用查询引擎,能够帮助开发人员深入了解代码。OpenGrok是公开开发的,因此得名 OpenGrok。主要具有以下几个核心功能:

  • 强大的依赖分析能力,借助内置的Analysis引擎,OpenGrok支持多种版本管理工具,能够根据代码的提交历史进行代码分析,并为源码的变量/对象、结构体/类、函数/接口、宏等生成可供快速搜索的索引文件。
  • 快速高效的代码搜索功能,支持不同类别的搜索并直达代码。
  • 使用方便:架设是比较麻烦,特别你想改一下它的很多默认代码目录位置,但一旦架设好,基本就很简单了,在 SRC_ROOT下面 check out 你想要阅读的代码,然后 OpenGrok index 一下即可,增量更新索引。
  • 基于 WEB:在服务端运行,基于 Web这样我多个设备都可以同时浏览,以前台式机和笔记本都要安装 Source Insight才行,现在跑在我自己的 nas上面(vps上面也有一份),你只要打开浏览器就行。
  • 支持语言多:使用 Universal CTags 作为后端 parser引擎,支持进百种语言,你想得到的语言都有。
  • 功能强大:web上浏览源代码时,具体点击函数名就跳转到定义处,可以方便的按不同项目搜索:定义,引用,文件名。右边有文档结构图,配合 web浏览器,还可以添加一些记录笔记和剪切分享的功能。

安装要求

Wiki pages:

Opengrok 本地搭建

  • 下载解压 OpenGrok
  • 下载解压 Tomcat。添加环境变量:TOMCAT_HOME=D:\Program Files\apache-tomcat-10.1.0-M8;运行目录下bin\startup.bat; 浏览器输入网址:http://localhost:8080/
  • 下载解压 Ctags(github ctags),添加环境变量:CTAGS_HOME=D:\Program Files\ctags-p5.9.20220116.0-x64
  • 下载安装 JDK

配置 opengork 环境

  • 1. 解压到目录D:\Program Files\opengrok-1.7.26,并将目录中lib\source.war拷贝到tomcat目录下webapps中
  • 2. 新建data和source两个文件夹(source目录用于放需要浏览的源码,data目录用于放置opengrok生成的索引数据)

data: D:\Program Files\opengrok-1.7.26\data
source: D:\AOSP\Android_S

  • 3. 运行如下命令(原始代码太多会运行很长时间,如Android源码),生成配置文件configuration.xml

不使用ctags.exe

java -Xmx524m -jar "D:\Program Files\opengrok-1.7.26\lib\opengrok.jar" -W "D:\Program Files\opengrok-1.7.26\data\configuration.xml" -P -S -v -s "D:\AOSP\Android_S" -d "D:\Program Files\opengrok-1.7.26\data"

使用ctags.exe

java -Xmx524m \
    -jar "D:\Program Files\opengrok-1.7.26\lib\opengrok.jar" \
    -W "D:\Program Files\opengrok-1.7.26\data\configuration.xml" \
    -c "D:\Program Files\ctags-p5.9.20220116.0-x64\ctags.exe" \
    -P -S -v \
    -s "D:\AOSP\Android_S" \
    -d "D:\Program Files\opengrok-1.7.26\data"

  • 4. 命令执行完后,需要修改tomcat下的webapps\source\WEB-INF\web.xml文件param-value为自己的configuration.xml

    <context-param>
        <description>Full path to the configuration file where OpenGrok can read its configuration</description>
        <param-name>CONFIGURATION</param-name>
        <param-value>D:\Program Files\opengrok-1.7.26\data\configuration.xml</param-value>
    </context-param>

  • 5. 并运行启动tomcat:bin\startup.bat,浏览器访问http://localhost:8080/source

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值