用了差不多十年的 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
这个插件对我而言,主要是:
- 可以方便的显示每行代码的最后修改记录,包括作者,commit 等。
- 可以本地看某个文件的 diff,左右对比的那种,确实对眼睛比较友好。
原来 vim 里也有插件能做类似的事情,不过体验比 GitLens 要差一些,这算切换过来的甜头了。
c/c++
这个是当时看 jvm 源码时用的插件。
跟 Vim 比起来,最大的感触是,函数跳转就顺畅多了。很庆幸当时旁边坐了晖哥,哈哈,谢谢晖哥带我走上 vscode 的坑。
go
go 官方出的这个插件确实很棒,比如:
- 代码格式自动调整
- 自动补全提醒
- 非法代码提醒,比如未定义变量
- 自动引入/删除 import
- 跳转:函数定义/引用
原来没有折腾过 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 的坑,都没个人来请教,有点忧伤 …