Atom、Sublime Text、VSCode 三者比较,各有哪些优势和弱势?

关注者
2,269
被浏览
553,161

我花了一个周末的时间来测试了这三者在Mac的表现,在这里分享一下。先说说我的场景和使用要求。我现在在做Chromium的开发,语言是C++,同时需要写些自己测试和自动测试用的网页。Chromium现在的代码(只checkout当前最新)是20G左右,然后ctags生成需要5分钟,10G。我自己使用上最重要的功能是代码补全(基于语法那种),然后是根据模糊文件名打开文件,再之后是文件内的Symbols跳转。然后是一些可有可无的功能:lint,format,goto define,git diff/merge。最后如果能Linux和Mac都能使用就最好了。

Sublime Text和Atom都有同事折腾过一条路,VSCode是我自己去试的。

- Sublime Text chromium.googlesource.com
- Atom chromium.googlesource.com
- VSCode:我只装了几个插件 youcompleteme, cpp-symbols, header source, clang-format

下面开始吐槽:

- 代码补全。我现在在Sublime用的是SublimeClang,只支持Linux,问题挺多的,常见的是对于某些变量突然就不工作了,偶尔会突然卡然后ST会死掉,还有切分支必须重启ST否则会乱掉,最关键的是作者已经不维护了。看到有Opera的员工在折腾这个GitHub - niosus/EasyClangComplete 然而我还是没有成功配置到Chromium可以用的程度。Atom和VSCode我都是安装了他们的youcompleteme插件,暂时看上去效果还好,起码不会像vim-youcompleteme乱报找不到文件(估计ycmd是报了,只是这些个插件还没实现-_-|||)。另外youcompleteme被投诉得最多的是会自己卡死,不知道到时候我用的时候会怎样。

- 根据模糊文件名打开文件。这个必须给Sublime好评,完全没有卡,一打开就可以搜索。相比之下Atom的FuzzyFinder有点慢。第一次打开几乎要花掉3分钟,考虑到只有每天上班、切分支需要重启Atom,就当休息吧。VSCode的体验介于前面二者,每次搜索需要5秒左右,老实说这种策略不如Atom的策略,我去休息一下比我每次等爽多了。

- Symbols跳转,Sublime支持,Atom支持但是默认的实现有点问题,我换了goto插件,VSCode我试了几个C++相关插件都不能正常使用最后装了个cpp-symbols。

- lint Sublime按文档装完以后有一个很好的lint,基本报错能报到准确位置。Atom看上去有插件,但是装完报错报的地方不对。VSCode没有对应的C++插件。

- format 三者都可以装插件实现,ST的clang-format在Mac有点问题,暂时会导致文件变成空白。
- goto define 三者的实现都各有各的诡异,不评价了。

----------------------------------------------

有朋友问为啥不用Vim。首先Vim的YCM插件一直都有问题,在Chromium的代码下,很容易就将Vim卡死,属于不怎么可用的状态,这个事YCM插件的问题,不关ycmd事。而且会胡乱报错,我定位到是ycmd报的错,貌似是其他插件直接忽略掉那些报错。据我了解,用Vim同事直接就手打,不需要补全,然而我并不喜欢这样。

----------------------------------------------

2017年2月9日更新:

从2016年10月到2017年2月8日,我主力开发工具在Atom。

Atom:有一段时间的ycm插件的速度有问题。不过在最新的版本修复了,现在运行得很流畅丝滑。FuzzySearch依然是最大的问题,我最近用fzf代替了,工作流程变成调出terminal,$ atom FILENAME** <tab>,效果还行。

不过接下来一段时间我在Linux下会主力用Qt Creator chromium.googlesource.com

今天我去试了一下vscode的最新情况。

vscode:

很多插件的问题都得到了修复,非常值得期待。

1. go to symbols修复了,可以直接用微软c++插件的
2. format,可以直接用微软c++插件的
3. 跳转header,可以直接用微软c++插件的
4. 有keymap的插件,可以不用学习快捷键了
5. vscode的git体验要比atom好了不知道多少倍,atom经常提交了还是显示有change,而vscode几乎是实时的

我至此只安装了2个插件(C++,you-complete-me)就可以满足我日常的工作开发。另外发现了一个新的问题:掉电很快,我现在基本是1分钟1格电。似乎是后台在跑indexing,需要修改配置关掉“C_Cpp.addWorkspaceRootToIncludePath": false。

配置文档在这chromium.googlesource.com

----------------------------------------------

2017年1月17日更新:

经过近1年VSCode的使用和更新,我现在倾向于使用VSCode来开发Chromium。除去ycm插件,我还开发了chromium-codesearch,可以方便在VSCode看codesearch。另外还有同事做了个language server。同时因为最近在做Windows的bug,发现了VSCode的debugger好用得不得了。