学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?

时间:2023-03-08 21:26:22
亦俊 ,90后,Vim 专栏作者
Vim 知乎专栏:http://zhuanlan.zhihu.com/hack-vim

用过 [ Visual Studio 2015 ] [ Sublime Text 3 ] [ WebStorm 9 ] [ IDEA 14 ] [ atom ](这货尼玛有很多BUG!)等等编辑器. 
我想说,只有Emacs 和 Vim 最适合我。。学会Vim 之后我几乎不想换其他任何编辑器(Emacs除外,来烧死我吧),目前在玩Vim.(由于是做Web开发, 所有JetBrains的IDE只用来调试一下JXH,NodeJS,以及上线前的优化,排错,不做正常用途)

--------------- 看了这么多小伙伴点赞, 那我奉上我GVim,NeoVim的截图 ---------------
--------------- Update 小伙伴支持过100赞, 感谢大家,vimrc dotfile 项目地址-------------------

地址:DemonCloud/Aix-Vim · GitHub
持续更新,长期维护 -- 如果你觉得我的dotfile和markdown对你学习Vim有帮助,请赏个github star,谢谢~

注:此项目中包含了 Linux 和 Windows 下两种不同的配置文件, Windows下的Gvim 已经更新到了最新版本的7.4.898,已打包,项目地址中有Windows版本的下载,本人已经完全迁移到Linux环境下, 详情请参见项目,有任何issue请及时提交,有疑问可以私信我 @亦俊

Update 2015.7.14
OS: Ubuntu 14.04 TLS 1366*768(LabTop)
ColorScheme: J (自写自用,-- 囧 . DemonCloud/J · GitHub)

GVim & Vim 7.4.781 ( 最新自己编译版本: ftp://ftp.vim.org/pub/vim/patches/7.4/README ) 
Fonts: [ Aix ] ( Aix BitMap 字体 由我自己制定,已经开源,请看项目 )

学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?
一些GIF:
Bug Repo 给老外 : Support vim-multiple-cursors ??? · Issue #151 · justinmk/vim-sneak · GitHub

------------ 点赞数超过 100, 马上奉上自己的 vimrc 配置文件(包括Windows 和 Linux 下的)
赤裸裸的抢劫啊!

最后我以一个新人的身份入驻了 Vim。 并且折腾配置学习了一个月。 最后才能够真正规范, 明了的用 Vundle 优雅的管理插件,整合一套Vim中比较爽的插件组合, 大概20几个。 然后读懂, 读明白每一行 vimrc代码的含义。 并且愉快的享受这 Vim 给我带来的刺激。 可能我是一个天生就爱折腾, 爱完美的男人(虽然我不是处女座)

关于题目:
首先。关于题目, 题目命名其实本身有问题 :
有了 Vim 还有必要用 github atom 或者 sublime text 么?

应该改成, 学会了 Vim 还有必要用 github atom 或者 sublime text 么?
如果按照题主这样问。 我可以说, 有了Vim 。 对于一个不爱折腾的人,有必要使用 atom 和 sublime。

但是如果问题是 学会了Vim 还有必要使用。。。 ??
这样的话, 我可以以我的亲身经历告诉题主。 你学会了 Vim。不说你会不会用 VimScript写插件。 完全可以丢弃其他的 IDE.

Vim 的真谛:(个人理解)
一:
其实Vim背后代表的更多是一种Geek思想,而不是装波一(B)。
也就是:“你只需要你需要的,丢掉那些你不需要的”。 一种极简思想。
一个臃肿的编辑器,你只会用到它功能的10%,其余90%的选项,你都没有心思去研究。
而也就这10%是你真正需要的,为什么不丢弃臃肿的90%, 轻松旅行呢?

二:
秉承Unix哲学: 一切皆文本.
Vim把对文本的掌控权交给了你,让你通过各种 ‘奇技淫巧’ 来操作它。
看似奇怪的键位,其实是那些前人总结出来的一套非常高效实用的文本操作技巧。
都是熟能生巧。

说说Vim 为什么比 IDE要叼。这里推荐一些插件
1. 使用 ag.vim 优雅的完成代码搜索, 速度比ack快上153%. 关键词各种秒搜而且自动忽略.git .,svn 类似的版本控制文件。且速度比IDE快了不少 。 而且定位代码速度飞起

2. 使用 vimshell + vimproc 优雅的在 Vim中完成各种CMD,终端操作。 从来没有见过,如此优雅的Shell 执行方式。 直接打开GUI 在里面模拟一个终端,非常爽, 前提是你要知道, 怎么在你当前的环境里, 编译 vimproc。 我在 Windows 8 下轻松的用 MinGW 完成编译。

3 使用 YouCompleteMe 优雅的自动补全。 YCM是Google的C++工程师开发的一套比较叼的代码补全插件。 需要 Python 2.7 以上的支持, 配置的话没什么复杂, 有外国人编译好的Windows版本。 我已经成功在 Windows下配置。很简单,轻松。 除非你不想看 FAQ, 那就没法子了。

4 使用 Ultisnip 优雅的增强补全。 这个插件可以扩展YCM 的提示,而且可以自定义代码生成。简直神器。

5. 使用 Multiple-Cursors 优雅的完成多光标同时输入。 我去, 这他吗比 Sublime Text 的多光标屌多了。。 为什么? 还在用 Sublime 的 Alt + 鼠标右键?。。。 Too young to simple。。。
哎哟,我去, 实在忍不住上图了.知乎蛋疼的不能上传Gif
Link: vim-multiple-cursors

6 使用 tagbar 优雅的查看 函数,类,变量。 不解释了。 
。。。。 好了, 还有一堆神级插件, 这里我就不说了。。。

你只有 折腾 Vim 累死过 3次, 你才能真正的喜欢上它, 不然你就会选择放弃,最终回到 IDE
在Vim的世界里,一切都需要自己动手,所以,他不适合不喜欢折腾的人,如果你对它没有200%的好奇心,不要玩, 不然你一定会摔键盘.

为什么说 Vim 写代码快? 前提你累死过3次,成功配置了Vim。
那么开始神奇的Vim之旅。你就发现。

1.你删代码比队友快 “first blood”
2.自动补全比队友快 
3 在20个G的文件堆里定位代码各种秒杀你队友
4 在vim中完成各种shell , 秒杀你队友 “Killing spree”!
5 优雅的更新升级, 删除 Vim插件(前提 Vundle) “Dominating”!
6 随性的自定义快捷键,完全属于你自己的风格, 一个配置文件随身带着走。或者压缩Vim文件包带着走, 想去哪就去哪,不用等你队友带节奏。 Unstoppable!
7 你队友还在用鼠标?那你已经进化了 。 Wicked Sick!!
8 什么? 开始用 Vim Markdown 来写文档了? 我草,你已经超神了!! God Like!!!
9 你已经离不开Vim了。 从最开始被各种折腾到想要砸键盘的你, 如今你已经爱上他了。 aM-m-m-m....(重复8次)Monster Kill 
10. 你注定和 Vim 过完这一生!......Holy Shit

于是你开始对自己以前的一些行为出现质疑:
删除一行 dd 不就行了。。为什么要鼠标选中一行之后按下backspace?
清除一行内容S 不就行了,为什么还要鼠标选中一行然后按下backspace?
给一行末尾补分号,A; 不就好了,为什么还要鼠标移过去末尾点一下然后按下; ?
然后给n行末尾补分号,Vjj*选中多行 :normal . 不就好了, 为什么要鼠标一个一个点了然后一个个补?
复制a行插入到b行后, dd掉a行在b行那按下p不就好了。 为什么要鼠标选中a,ctrl+x ,然后到b的末尾按下回车,然后ctrl-v ?
................................................
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?
................................................

基本上是不适合在 Windows 环境下玩的,Vim比较适合在 OS X 或者 Linux下跑,原因是Windows实在是太坑了。 Gvim 性能不行,然后很多插件的兼容性很差。

57赞同反对,不会显示你的姓名
如果 vim/Emacs 已经用的很熟,——没必要;
如果只是听过 vim/Emacs,并且听说它们神奇的学习曲线,并且看过 tutorial 之后还不习惯也不喜欢,——why not take a try;
如果就想试试或者投奔之,考虑到要学习一套(个人感觉不怎么方便记忆的)快捷键,——it is up to you;
如果是坚实的*软件/开源软件拥趸,——不用我说,肯定不会用;
如果只用过 IDE/notepad 之类,——试一下又不会怀孕;
如果……能问出这个问题,试试那个最典型的选择困难症患者药方:交给硬币,在看到结果之前,估计您已经有了自己的选择。
430赞同反对,不会显示你的姓名
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?Boxsmia ,要么现在,要么永远都不!
转自国外网站,非原创,出处未明,请谅解。
让我们把时间挪回你还是一个 Vim 新手的时候。和所有 noobs 一样,你打开了 vimtutor。「hjkl,J的意思就是下。很好理解嘛,J 就是 JJ,JJ 当然是在下面的!」你为自己的聪明的联想感到自豪。Vim 的学习曲线虽然陡峭,但是聪明的你经过三个月的学习终于初步掌握了基本的移动命令。
接着你开始编程,你需要一个项目式的文件管理器,大部分 Vimmer 都知道NERDTree,可是 NERDTree 你很难搞清楚为啥有时候他不随着 buffer 一起关闭。所以你大概忍耐了一段时间终于发现了NERDTree tabs。是的,使用 Vim 你不单只需要找到一个「好插件」,还要找到一个「好插件」的插件。
接下来你要在这个项目里查找文件了,当然你可以原生的grep及其延伸命令,但是你觉得每次都输入太麻烦了,于是你找到了 Command-T ,后来发现这货实在太 JB 慢了,然后你找到了 CtrlP ,终于变快了,又发现这货的模糊搜索有问题。而你打开 Sublime 按下 CtrlP,发现不但模糊搜索没问题,而且还快多了。
接着你发现 Vim 内置的补全太弱了,你需要一个更强的补全和 snippets ,所以你找到了 snipmate ,然后你又发现了ultiSnips ,最后你终于找到了 neocomplete 。世界终于清净了。你在 Vundle 轻松安装成功。再次打开 Vim 却发现出现了错误。原来,你还要自己下载 Vim 7.4 源码 编译一个带 lua 支持的 Vim 才能支持 neocomplete。经过一番折腾,你终于成功编译在 Mac ,VM 上CentOS ,Ubuntu 的 Vim 7.4 with lua。虽然各个系统过程各有不同,但你还是成功了。你想到当年等待了10秒 VS 才打开的日子,含笑对着eclipse的图标说:"IDE ,suck it."。可当你打开 Sublime ,使用 Package Install 轻松安装SublimeCodeIntel 之后,发现 import 可以实时补全也就算了,可几乎所有主流语言都可以 ctrl+click 跳转定义之后,知道真相的你眼泪掉下来。
装了28个插件之后,并且花了三个晚上的时间来解决你的键盘映射问题之后,你一脸满足地看着你手写了八百行带注释的 vimrc。发现,是时候为你挚爱的 Vim 做些什么了。你打开了 Vim Wiki 搜索 Vimscript 的教程,发现那教程写得和*一样,但你早已习惯了,Vim 本身自带的 help 比起这教程也好多少不是吗?「相比大部分 Vim 插件的文档这教程已经很优雅了。」你安慰自己说。可当你看到 Vimscript 的语法时,你吐血三升,无刻板的 HKKB 终于有了鲜红的印迹。在你昏迷当中,你梦到了原来 Vim 的文档和 Vimscript 是未来机器人穿越过来改写了逗你玩的。

Honey,why don't just try Sublime?It would't get pregnant.

1赞同反对,不会显示你的姓名
用了有四年gvim吧, 觉得它已经够强势了。

基本上vim熟练的人:
1. 可以自行定制任何功能。 
2. 能把常用的功能自行控制在键盘上十只手指头及附近键位内以最快捷的方式触发。--------- (这句话说得有点复杂, 因为我不知道应该用什么语言来形容它)

45赞同反对,不会显示你的姓名
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?pansz ,我说的大多是一本道
通用的文本编辑器,我认为 vim / emacs 学会一样就够了。因为他们的发展过程中经历了足够多的演变与交互,每个用户都是程序员,不同的用户的需要哪怕非常小众往往在这类编辑器中也能找到解决方案,可以理解为 vim / emacs 是开发者与用户进行了多年的深入的反馈交流之后产生的尽可能适合更多目标用户需求的软件。

学会 vim / emacs 之后,其实只有某些专门领域的针对某种语言特别优化的 IDE 对你可能有意义,比方说搞 C# 用 VS,比方说搞 Java 用 eclipse 之类。那些 IDE 的优势在于专门为这门语言进行了很多语言级的优化适配,所以可能比你直接用编辑器更方便,当然这种方便性仅仅在你只使用为该 IDE 优化过的语言的情况下才有价值。对于很多需要编辑多种不同文本的程序员,他们需要接触各种各样的文本文件,通用文本编辑器更有价值。

若是一个通用文本编辑器 vs 另外一个通用文本编辑器?我找不到任何理由。实际上无论 sublime text 还是 atom,他们的目标客户其实都并不是 vim / emacs 用户。

8赞同反对,不会显示你的姓名
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?不求东西 ,data science / MCDS@cmu
多动症+强迫症患者慎用。vim/emacs/sublime/atom 这些编辑器都有个共同的问题,就是插件大多数是第三方开发的,质量参差不齐,快捷键相互冲突。有时写着程序会突然发现某个插件/功能不好用,然后就上网搜一大堆配置,或者试一堆新插件,记一堆新快捷键,最后花了很多时间都忘了自己原本要干嘛的。

如果你属于上面这类人,并且 爱好不是折腾编辑器的话,那还是学习使用IntelliJ吧(写100行左右这种小脚本就无所谓了,用啥都行)

7赞同反对,不会显示你的姓名
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?吴健 ,计算广告/分布式计算/Ukulele
总会隐隐觉得编辑器IDE的世纪争论会被jetbrains终结,Mac配它实在是太完美了。
我为什么还用vim,是因为服务器上只能用它。
0赞同反对,不会显示你的姓名
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?陈斌 ,程序员, emacs/vim高手
用过sublime,我针对一些特定功能做过专门评测.离神器还有很大距离.sublime模拟vim插件我也用,一般般.

谈到第三方插件质量,vim/emacs是第一阵营的.其他都是第二阵营.

32赞同反对,不会显示你的姓名
匿名用户
我十年前初步学会了用 Emacs 和 Vim,后来基本是 Eclipse 写 Java,随机编辑器(Vim,TextWrangler,TextMate)写其它语言代码。
今年因为要写 Clojure 和 web 项目,懒得跟 TextMate 斗争之后果断回到 Emacs for OS X。
怎么说呢?当你不是针对某一个语言(比如 Eclipse / IntelliJ for Java)的时候,Emacs 是最全能的。
我办公室的另外几个前端,早早开始用 Atom,每当打开大文件时候都因为卡得痛不欲生换去 Sublime;然后 Sublime 也只会用一下搜索和打开文件。其它的事情还是在其它的地方做。每天看他们就是在琢磨各种工具而没在做事。差别是什么?

差别是,你要找一个真正有潜力的工具然后去磨砺它。Emacs 有这个潜力,Vim 也许有,但 Sublime 也好 Atom 也好,你如果有这个能力去让它们适应你,当然不在话下;只是因为“看上去比较方便”,你用什么都一样低效。

5赞同反对,不会显示你的姓名
有了Vim我还用IDE呢,虽然各种找IDE的Vim插件。
5赞同反对,不会显示你的姓名
说说自己的感受吧,自从vim上手了之后,无论用什么都会配成vim的样子。
对于代码补全,文件管理,我当然喜欢用,但是编辑文件的时候我更喜欢vim的模式。hjkl来移动,普通模式跟编辑模式切换,:w就可以保存文件。
当然sublime text是一个很好的编辑器这不错,对于初学者来说真的很友好。不过你用久了编辑器,不觉得移动编辑光标要用到鼠标这很累人吗?
其实大多数用sublime text的人第一印象都是因为它有个良好的UI,不过这个良好的UI也仅能在本机跑而已。假如你是连接到服务器上编辑文件那么也肯定是用vim的了,毕竟在服务器环境下能跑的强大编辑器就只有vim一个,有且仅有,当然你说你用的是windows server,那么就当我没说吧。
反正这些编辑器都会继续存在的,vim只不过是vi系编辑器里面的一员,只要人们喜欢vi系的操作方式它们就会存在,前几天不是hacker news上面有人提出搞neovim(将vim重构的一个项目)吗?
157赞同反对,不会显示你的姓名
我看到很多使用 Vim 的朋友说,「我已经学会了 Vim,再也不需要任何编辑器了」。
每逢看到这样的话,我就会想到类似的「我已经学会了 Python,再也不需要别的语言了」「我已经学会了 Linux,再也不需要别的操作系统了」。
可这样的「信仰」,甚至宗教斗争,对你的进步一点帮助都没有。
编辑器也好,编程语言也好,它们都不是女人,你可以同时和好几个在一起,不必从中选出一个和它厮守一生。
15赞同反对,不会显示你的姓名
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?李遥 ,A Programmer
我写程序从来不计较编辑器,但是我很计较调试器(debugger)。为一个语言写程序我永远先搜索哪个IDE有最好、最靠谱的调试器支持,然后我就用那个IDE的编辑器
30赞同反对,不会显示你的姓名
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?vczh ,专业造*,前排已拉黑。…
搞gayui系列代码的移植,让我学会了在命令行下使用clang、vim和gdb。想起来已经断断续续的过了两年。现在已经越来越不想用这些鸡吧工具了,调试起GUI来一点都不方便,于是我跟 @Mili想了想,就用gayui去申请了鸡吧公司系列软件的open source license(主要冲着clion。

还挺容易,半个月就批下来了。

4赞同反对,不会显示你的姓名
Atom很难用,太慢
ST很好,最近刚开始学用,jshint和vim插件不太兼容,用着也很痛苦。
vi最快,gvim慢点但是也超好用
emacs只用来写日志,org-mode很方便。
notepad++用来处理json和xml,在文件里搜索替换之类都很方便
notepad可以编辑超大的xml...这是试过前面所有工具以后,经前辈指点才知道的
最好的还是vs加上resharper...最近的emacs话题不是导出gcc的ast吗,没有这个,代码编辑就总不可能做到vs或者各种java ide的水准。
求大神指点,怎么在vi里refactor js代码,像vs加resharper那样?
0赞同反对,不会显示你的姓名
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?赵惜墨 ,对,我就是百度的
用vim 的还少。。。。。我是我们组唯一一个用emacs的。。。。。被歧视为用未知编辑器。。。。
0赞同反对,不会显示你的姓名
学会了 Vim 还有必要用 GitHub Atom 或者 Sublime Text 么?chenxing liu ,4年vim折腾经验,只使用衬手工具
看了下回答,总感觉标题改过了呢。
我大部分时间会使用vim进行编辑/开发工作,自己的vim已经调教成一个半IDE了。
但我也会使用ST(没出Atom)或Atom当作一个简单的粘贴板。不用vim原因有以下:
  1. 因为vim一般作为开发,默认会显示行号;
  2. 超过一屏也没法粘贴(如果真要在vim下粘贴,我会:!cat %然后选取);
  3. 如果被粘贴对象是代码,vim一般还开了autoindent,粘出来就如一坨**。

所以这时就是ST或Atom登场的时候了,临时的粘贴都放在这里,也方便进行简单的修改再粘回去。

9赞同反对,不会显示你的姓名
有了sublime text和Vintageous,还有什么用vim的理由?一定要保持与时俱进。 https://github.com/guillermooo/Vintageous
from: https://www.zhihu.com/question/22904741