0%

一个月的后端技术学习总结(二)编辑器,我最终还是选了Vim

接着上一篇《一个月的后端技术学习总结(一)》

近年来,众多新的优秀的编辑器的陆续出现,如最早08年Google工程师Jon Skinner打造的Sublime text、14年GitHub推出的Atom、15年MS推出的轻量级Visual Studio--Visual Studio Code。

经过那么多年的发展,主流编辑器无一例外都有以下特点:1)跨平台,2)支持插件拓展及自定义,3)用户使用上手极快和4)非常直觉化(Intuitive)。 前两个特点当然是因为这是一个趋势--在于很多开发者往往不是在单一的语言、单一文件或者独立完成项目,因此多语言的适配、文件间的跳转切换或者是如Preview、Deploy、VCS这些功能变得比以往更加重要。同时对比更加“专一”且“臃肿”的IDE,编辑器的发展往往是多向各自趋向于特定的IDE,但却在这当中的过程中的某个平衡点止步,而最终使得这两者界线越来越模糊,人们也再也说不清自己用的是编辑器还是IDE了,我曾经将Vim打造成Python 的IDE,用起来功能一个都不少,但与现今最优秀的PyCharm相比,Vim就显得有些单薄,甚至单薄地让人有些畏惧。

3)和4)两个特点虽不说得上是一个趋势,但是很大程度决定了这个编辑器的易用性和推广性,Sublime Text正是因为这个原因,在我大学前两年成为我的主要开发工具,而我身边的人也几乎不例外。因此,凡是有人使用Vim可谓是反“潮流”的。因为对于很多人而言,Vim的学习曲线过于陡峭,很多时候仅仅学了怎么保存文件或者是怎么进入、退出插入模式就停下了,顶多再学一些Vim tutorial中怎么在文档里面移动跳转,而真正Vim如何能够提升编辑效率这一点却未曾领会过。 以我自己为例,我最初较完整学习Vim是通过一篇文章:Learn Vim Progressively,在文章里作者将Vim的学习分成多个阶段:

  1. Survive
  2. Feel comfortable
  3. Feel Better, Stronger, Faster
  4. Use superpowers of vim

我把四个阶段的内容都看了一遍,但自己很长一段时间只是停留在了第2阶段。这当中的主要原因是不经常用Vim开发,使得很多时候学完相关的技巧,并没能够好好训练,转过身很快就忘了。 而如今,因为主力系统已经换成了Linux,所以也算间接强迫自己去使用Vim。这的确能够显著提升我使用Vim的时间,但是真正让我懂得Vim的编辑效率之Powerful,还是通过使用各种插件或者是定义的vimrc文件,这很大程度降低了我对于原生Vim的恐惧感,使我能够比较容易地去编辑,并去用到一些编辑技巧。最后能够脱离使用插件和相应快捷键,将它们用原生Vim的逻辑操作去替代,也是符合上文Progressively的思想吧。

Vim的高效很大程度在于这个编辑器它真的是为编辑而诞生吧,所以怎么快速码字便是它最高的目标,至于如何达到这个目标,作者并没有考虑一般用户的接受能力,将工具直接交给开发者自己去使用,自然这样就会衍生出两派人--“力挺”派和“无用”派。 “力挺”派显然是和作者站在同一边,认为Vim要能够发挥出最大效用,则主要在于开发者个人本身能力,用不好Vim的人被他们认为是不够“Geek”或者是修炼不足。 “无用”派则强调学习曲线才是真王道,要用好Vim需要极大的学习成本,这对于日新月异的编程世界是不能够接受的,只要能够快速轻易码字,就是好工具。

这两派的观点都不错,但很明显都比较一概而论。而我个人曾经是后者,用过Sublime Text, Atom和Visual Studio Code,一度恐惧Vim各种各样的指令和操作。现在我也不得不承认要用好Vim,需要极大的学习能力和毅力,毕竟面对现今越来越多优秀而易用的编辑器,能够坚持使用Vim真的很不容易。说到底,当然这样的“守旧”也还是看人吧。

最后简单概括下Vim是如何解决我们的常用需求的,我把它概括为两大法宝:

  1. 丰富的插件资源 > Vim可以说是支持插件的鼻祖,能够针对不同功能来填充编辑器本身,使得编辑器可用性更高。 很多插件甚至成为安装Vim后必须安装的:如插件管理的Vundle,文件目录的NerdTree,强力搜索ctrlp等等。

  2. 自定义的vimrc配置文件 > 配置文件是大部分高度定制化软件的标配,而Vim的配置文件对Vim有着根本性的指导作用,其本质也类似于shell脚本,在vim启动时运行一遍来配置Vim。举几个例子,按键映射(map)算是第一主要的,它使得键盘能够更加合理布局,快捷键支持当然也因此少不了。然后就是设置编辑器的内参,如tab的宽度,行号,甚至连修改记录保留项数这么细枝末节的都在这里能够配置。再一个还可以自定义函数,功能十分强大。最后就是插件更加详细的设置,因为插件本身也是通过Vim内部的函数调用来实现的。

用Vim个人感觉还是一种对上上个年代优秀的程序员致敬吧,Vim的发明可谓说极大方便了程序员,让其能够产生更多优秀的代码。而使用Vim的人也往往有着同样的追求,这样的精神使得这些“Vimists”对于工具的简单和效率可谓是严苛到了极致,再加上这些人往往是少众,Vim的高度定制化很难不满足他们的需求。

编辑器,我最终还是选择了Vim。