目前在用vscode编写golang和vue。本文记录一些使用经验。
---------快捷键--------
大括号匹配跳转:Ctrl + Shift+ \
----------扩展----------
Draw.io Integration 绘制流程图
Thunder Client 代替postman
favorites 一开始用的pin,也就是那种图钉图标的功能。不过那个pin有bug,移除文件时有问题,总是移除最后一个,而不是移除我选中的。后来一想,pin这种钉一下功能,不就是收藏起来吗。于是搜索favorite,就找到很多。开始装了几个,都不好用,直到发现这个。
Status Bar Tag 可以给打开的文件夹自定义名字,显示再状态栏上。
Eva Theme这个主题不错。鼠标选中关键词时,希望其他地方的关键词也高亮出来。这个主题表现的比较好。
Material Theme也是个不错的主题。
dark-plus-syntax 是个不错的主题(2021-4发现,看c++代码很舒服)
Bracket Pair Colorizer 这个扩展可以把代码中的作用域标的很清楚。
godef工具实现golang的代码查看时的跳转,但没有缓存,每次跳转,都要查找语法树,很慢。https://github.com/gitbufenshuo/godefcache 这个工具实现了缓存功能,跳转时很快。https://github.com/archxm/godefcache.git 我又适当增强了下。
go-outline 工具提供了代码大纲功能,不过不太好用。比如类成员函数,展示给我们的是类名+函数名称,由于这两名称连一块,很长,只显示了前面那部分,这样我们没法看清是那个函数。go outliner这一扩展工具,属于前者的加强版,该扩展查看函数,类等等,更加方便
highlight-icemode-select 选中后相同内容高亮。发现该扩展不太好用,不会全词匹配。还是使用vscode自带的更好,需要进行设置,如下:
"workbench.colorCustomizations": {
"editor.selectionBackground": "#14a",
"editor.selectionHighlightBackground": "#733",
"editor.wordHighlightBackground": "#660",
"editorCursor.foreground": "#fff"
}
错误提示不刷新:语法出现错误时,改完后保存,就会消失。不过,如果文件中的符号是从其他文件引用的,然后其他文件有改动,当前文件中的符号引用可能会提示类型不匹配的错误,如果其他文件中定义该符号的地方又变回来了,当前文件的符号还是提示语法错误,但实际上,已经没有语法错误了。这时可以在当前文件随便输入个回车,保存,再删除,再保存,错误提示就消失了。
调试时,把launch.json中的program修改为:"program": "${workspaceRoot}"
Bookmarks,以前用VS写C++项目时,习惯了bookmark,现在vs code里没有该功能,需要加扩展。这个扩展的源码在https://github.com/alefragnani/vscode-bookmarks。该源码的package.json里,可看到一些原生命令,这些命令在另一个叫做
statusbar-commands 的扩展里,会用到。
Line Highlight Bookmark,同样是bookmark,不过这款的快捷键似乎更好用,ctrl+b就是把当前行设置或取消bookmark,按F2跳到下一个。
statusbar-commands vscode的一些快捷按钮比较少,所以使用该扩展,在状态栏那里增加一些快捷按钮。
简单地说,当安装完bookmark和 statusbar-commands后,在settings.json里,增加如下代码:
"statusbar_command.commands":
[{
"text": "$(bookmark)",
"tooltip": "workspace settings",
"alignment": "left",
"command": "bookmarks.toggle"
},{
"text": "$(arrow-left)",
"tooltip": "workspace settings",
"alignment": "left",
"command": "bookmarks.jumpToPrevious"
},{
"text": "$(arrow-right)",
"tooltip": "workspace settings",
"alignment": "left",
"command": "bookmarks.jumpToNext"
}
其实还有更强大的一个扩展,就叫Commands,但我这次没试它。以前在这个扩展的描述里,我学到,像$(bookmark)这种指定图标的素材,是在Octicons中获取的。
有时间的话,还是应该好好研究下vscode的扩展写法。
----------一些尝试----------
https://github.com/fatih/gomodifytags 一个工具,可以快速为结构体生成tag
----------使用经验----------
如果编辑器内字体小,可以设置字体大小,如果菜单项字体小,可以按住ctrl再按+或者-。
"C_Cpp.intelliSenseCachePath": "${workspaceFolder}/.vscode/cache" 改完后,c++的intelliSense感觉要快些。原因不明。
禁用不必要的扩展:因为我需要编写golang和c++代码,所以安装了golang和c++相关的扩展,当我打开一个c++项目时,go.exe也会时不时运行,还挺占用cpu资源的。于是搜了搜,找到一个方案,先把所有扩展都禁用,然后打开c++项目,再把需要用到的扩展对工作区启用。go扩展不打开,所以go.exe就不运行了。