还有必要学Vim吗?

曾经有一段时间,编辑器领域的创新停滞了。在web编程走红,尤为是electron出现以后,这个领域又上了一个新台阶。Atom, VsCode等等替代了以前惟一的可是臃肿的跨平台选择 - Java。一时之间,你们都开始用网页来写代码了。html

在这样一个时代,还要学Vim这种中古的技能吗?我来讨论一下为何要,不但要,并且必需要。git

  1. Vim仍然是最高效的编辑器
  2. Vim仍然在高速进化
  3. Vim是编辑器领域的Javascript

高效

Vim的学习曲线是出了名的高。可是这背后是高投入,高产出的效率。github

随便举几个例子:dd删除一行,两个键搞定。普通的编辑器可能要<HOME><Shift-End><Del><Del>这样的组合才能搞定。
w能够跳过一个单词,普通的编辑器要<Ctrl-Right>才能够搞定。一半的按键,还不包括远离中原的Ctrl键。mM记住一个位置,'M随时跳转到该位置。通常的编辑器...说实在的我并不知道通常的编辑器如何作相似的操做。在VsCode的菜单里扫了两边也没找到。web

这只是九牛一毛。并且用的时间越久,你积累的技巧就越多,你的效率就越高。编程

高效的另一面是:反应快。其实要说功能强大,JetBrain的产品无疑都很牛。可是在大脑高速运转的时候,思惟到屏幕上字符的转化过程减小2-300毫秒致使体验的差异是巨大的。就好像。。。。vim

其实Vim的高效很大程度上应该归功于所谓模式编辑 - Vim于大多数编辑器不一样,有insert,
normal,
visual等等几个模式。这也是形成它学习成本高,被人吐槽多的缘由。最近网上疯传的段子就是“如何退出Vim”。各类欢快的图片层出不穷。这里忍不住贴一个疯狂的图片。若是你看到这个图片决定不学Vim了,那是你的损失。反正我以为这酷毕了。electron

进化

Vim 从Vi进化而来,为一个略显骨感的编辑引擎加入了诸多特性:async

  1. 跨平台
  2. 语法高亮
  3. diff
  4. split
  5. plugin和vimscript....

在大约两年前,neovim出现了。它主要作了这么几件事:编程语言

  1. 将Vim的开发方式带入21世纪
  2. 加入async方式
  3. 远程控制

Vim的开发一直都是一个我的秀。当kernel已经从patch迁移到CVS迁移到bitlocker迁移到git的时候,当sourceforge已经经历了诺基亚式的巅峰到谷底的时候,Bram还基本停留在N年前的模式。固然,Vim首先是一个我的项目,不管怎么作都不过度。但单从技术进步的角度来说,这确实是逆潮流的。编辑器

async看来是一件小事,可是却从根本上移除了用户体验的绊脚石。neovim出现以后,包括ALE等等在内的各类创新涌现了出来。甚至Vim8也不上了这个缺口。这个领域发展的速度一会儿从步行编程了摩托车,出来一两个伟大的产品一点也不出奇。

远程控制用一种叫作msgpack的IPC将编辑核心和UI完全分割了。方便了UI编写者。其中一个使人振奋的就是和VsCode的集成

写这篇文章的时候,恰逢neovim最新的newsletter发出。有兴趣的能够戳这里看看。

Javascript

我在拿编程语言和一个编辑器作比较吗?我喝多了?

如今流行,甚至不怎么流行的编辑器或IDE,都支持插件。而在这些插件里面,总有一个插件是不会缺席的,那就是Vim。JetBrain有IdeaVimVsCode有,Atom有,Sublime有,Chrome, Firefox也有,连Office都有,还收费! 这里面有一个逻辑,不是由于Vim很流行,而是Vim有意无心地创造了一种编辑的语言。好比dw,yy, g, gg等等。这些快捷的命令在熟悉以后,再也不是简单的命令而已,而成为能够组合的元素。你不会在思考用什么样的命令,而任由你的指头自行在键盘上跳动,进行它本身的编程。

学会了Vim以后,不管什么IDE,不管在什么平台上,都无需再学习另一套键盘快捷。可谓一劳永逸。例如如今如日中天的VsCode,有很是多的快捷键,并且每一个平台各有不一样。可是只用安装一个Vim插件,这些快捷键都不用学了。

之因此和Javascript比,是由于:几乎全部的语言均可以transpile成Javascript; 几乎全部的编辑器和IDE,都支持Vim插件。

人生苦短,快学Vim!

相关文章
相关标签/搜索