0%

vscode 使用小记

用了差不多十年的 vim,近期转到 vscode 了,记录一些使用心得

缘起

原来一直用 vim,感觉还挺顺手的。

大约去年底的时候,要看 hotspot JVM 的 c++ 代码,瞬间觉得 vim 不够用了。因为 c++ 太复杂了,重载/虚函数 之类的,函数跳转就很难搞了。vim 通常是搭配 ctags 来做函数跳转,看 JVM 代码的时候,一个函数跳转,能出来好几页的候选项,瞬间就头大了。
当时看隔壁晖哥用 vscode 还挺方便的,就也装了用起来了,确实感觉耳目一新。

最近主要看 go 代码,也就顺势切到 vscode 了。

初印象

vscode 总体感觉是比较成熟,各种插件比较丰富,如果碰到错误,也能搜到解决办法;这也是随大流的好处,坑基本都有人踩过了。

vscode 的好用,主要是依赖插件,选择合适的插件就很关键了。因为 vscode 提供的应用市场,插件是有第三方提供的,质量也可能参差不齐,装插件的时候,需要一些时间精力来挑选。

引申一下,这种应用市场的机制,一方面可以让插件丰富一起来,充分发挥开放平台的优势;另一方面,对于插件的质量,其实是比较容易失控的,也是需要平台方有机制来保障的。
比如下载数量,好评数,都是比较好的机制。

接下来,记录一些我这边用着比较好的插件。

Vim

虽然用上了 vscode,但是我还是喜欢 vim 的操作习惯。
这个 Vim 插件可以保留 vim 下的大部分操作习惯,所以感觉切换过来还比较的顺畅。

Remote - SSH

虽然用得是 Mac 电脑,不过一直习惯 Linux 上的开发环境,所以一直都是用虚拟机来开发。
以前是直接 ssh 到 Ubuntu 上来开发,现在这个 Remote - SSH 插件就显得很必要的了。

另外,Ctrl + ~ 可以唤出一个 terminal 执行 shell,也是挺方便的,有些时候还是需要执行一些 shell 的。

至此,原本的主要的 ssh + vim 流程,就有了完整的替代了。

GitLens

这个插件对我而言,主要是:

  1. 可以方便的显示每行代码的最后修改记录,包括作者,commit 等。
  2. 可以本地看某个文件的 diff,左右对比的那种,确实对眼睛比较友好。

原来 vim 里也有插件能做类似的事情,不过体验比 GitLens 要差一些,这算切换过来的甜头了。

c/c++

这个是当时看 jvm 源码时用的插件。

跟 Vim 比起来,最大的感触是,函数跳转就顺畅多了。很庆幸当时旁边坐了晖哥,哈哈,谢谢晖哥带我走上 vscode 的坑。

go

go 官方出的这个插件确实很棒,比如:

  1. 代码格式自动调整
  2. 自动补全提醒
  3. 非法代码提醒,比如未定义变量
  4. 自动引入/删除 import
  5. 跳转:函数定义/引用

原来没有折腾过 vim 下的 go 插件,应该也有能类似做到这些的插件,不过可能没有官方出的这个插件好

不过也踩到一个坑,vendor 下定义了一个函数,同时 vendor 下的其他 package 有引用这个函数,但是找函数引用的时候,会说没有引用。
这个坑暂时还没有找到解法…

现在有点犹豫要不要入 goland 的坑…

debug

以前搞 c 开发的调试,通常是徒手 gdb 搞起,这次切换后也尝试了下编辑器的调试功能。

在编辑器打断点确实挺爽的,之前虽然见过,不过一直也没有真实体会过,体会了一下,确实是挺好的。
不过也有一个不好的点,断点之后,有时候想看下汇编代码,看看寄存器的值,或者想汇编的单步跟踪一下,现在是不知道怎么弄了。
或许有解决办法,只是我还不知道…

另外是,编辑器 debug 的学习成本也有一丢丢,主要是需要配置下 launch.json,还可能需要 tasks.json。

最近分析 viewcode 一个小 bug 的时候,碰到了调试的时候,不再接受标准输入的问题,按照这个路子才搞定,也是费了一些功夫。
https://blog.csdn.net/weixin_42529589/article/details/104583672

总结

vscode 目前给我的体验还是不错滴,不过也有点纠结要不要切到 goland …
主要是周围的人都用 goland,我这踩到的 vscode 的坑,都没个人来请教,有点忧伤 …