一年以前,我写下了《如何打造属于自己的vim神器》并且录制了相应的Vim使用视频。 当时收到了大量vim爱好者的好评和反馈,在这一年里,我也对我自己的vim配置做了不少修改。现在我的vim配置放在Gihtub上面,目前有21个fork。它里面不仅存放了我的Vim配置,还保留了我的Mac使用习惯,包括Git,Tmux,Zsh等命令行工具的配置。几乎我每换一个工作环境,从mac到虚拟机,从本地电脑到远端服务器,我要做的第一件事情就是先clone我的Vim仓库,然后通过简单的几个命令把神器打造出来。

这篇文章我打算讲一下我对Vim的一些新的认识,同时写下我对于新手Vimer的一些建议。

新的认识

为什么要学习Vim?

学习vim有很多好处,我认为最大的好处就是让你在编辑代码的时候也像在编写代码,因为你不是用鼠标等所见即所得的方式去操纵文本,而是用一些类似编程语言的命令来操纵他们。而且这些编辑命令可以任意组合,千变万化,如果使用得当,它帮助你完成各种其它编辑器无法轻易完成的任务。

当然,你可能觉得要记这么多命令会是一种累赘。但是,真正的vimer是不需要去用脑袋记忆这些的,而是完全靠肌肉记忆。vim的学习曲线虽然很陡,但是,一旦学会便很难忘记。甚至让人有点上瘾,比如我现在只要换个编辑器,如果它不支持vim的modal editing,我就会想办法去弄一个插件来支持它。

另外,学会了vim,你可以在服务器上,在命令行里如鱼得水。因为这些场合,图形化界面没有了,vim的长处就体现出来了。

最后,人一旦养成良好的习惯,便会产生惊人的力量。对于编辑器的使用同样如此,如果你根据自己的偏好设置了很多处理日常工作的快捷命令,以后换一个操作系统,换一个编程环境,只要你的vim配置在,你就能马上高效率地工作。

Vim是万能的吗?

这是一个让许多vimer感到困惑的问题。

比如,我现在是一个vimer,那我是不是所有的事情都要用vim来做呢?我要用它编码,调试,运行,打包,部署。但是,vim天生是有一些缺陷的,比如对于debug支持不太好,对于项目管理不太好。作为一个程序员,切勿变成“手上有一把锤子,那么眼中什么东西都变成钉子”的人。 很多场合下面,图形化的工具还是比vim要好,至少debug和项目管理要好。

这时候,有某些vim死忠党可能就要跳出来了。你这不是纯粹的vimer了。vim可以无限扩展,你只是不会用而已。理论上虽说如此,但是要自己编写插件去扩展vim,有点得不偿失。首先,vim出来已经有40多年了,为什么至今没有一个好的插件支持debug?难道是在你之前的人都很傻,他们编写不出来这样的插件吗?还是说,vim根本就是很难支持。又或者说vim党都是命令行gdb,根本不需要什么图形化debug。

用最好的工具做其最擅长的事,这是我的体会。我现在会把Xcode、Eclipse和VS都安装上vim模拟器,我觉得这样子效率最高。另外,我现在在学习Emacs,我也使用的是vim的modal editing,用的是EVIL-mode。

Vim是最好的编辑器吗?

是,也不是。为什么说是呢?因为我是一个vimer,它的modal editing是全世界独一无二的,它可以给人带来非常愉悦的文字编辑感受。就像使用五笔打字一样,这种感受用拼音输入法的人是无法感受的。当然,我这里并不是说拼音输入法怎么怎么拉,只是打个类比。

说不是,因为世界上没有一件事物是完美的,vim也不例外。那么这个世界上存在最好的编辑器吗?有人可能马上会想到Emacs。虽然我现在只是一个Emacs菜鸟,而我在Emacs的世界里听到无数的大神说,“Emacs是这个世界上最好的编辑器”。 诚然它确实是一款非常牛比的编辑器,在设计理念和扩展性等方面都超越了vim。但是,我相信它也有它自身的问题,只是我暂时没有发现罢了。

与其争论世界上最好的编辑器是Vim还是Emacs,不如两者尝试一下。在深入了解和使用之后,自己再做出评价。但是,这个也只是你自己的一个评价标准,就像有人喜欢香菜而有人讨厌香菜一样。切勿上升到宗教信仰级别,动不动就口水战。

编程不是比打字速度,很多时候都是在阅读、思考和浏览代码库。所以,如果你能在你自己现在使用的编辑器上面熟练掌握这些操作,相信用什么编辑器都阻挡不了你成为一个优秀程序员的。

对于新手Vimer的建议

如何学习vim

学习vim最重要的就是养成良好的习惯。比如刚开始接触的vim的同学,一定要先看vimtutor。认认真真把它读完,至少3遍以上。然后对vimtutor勤加练习,直到养成肌肉记忆为止。

其次,vim配置一定要用github管理起来,然后插件系统用pathogen或者Vundle管理起来并一并托管在github或者其它源码托管网站上面。

一定要看《Practical Vim》这本书,至少看5遍以上。尝试把该书上面介绍的技巧用到自己日常使用当中。

如何学好vim

对于这个话题,我想勤加练习是最重要的。你一定要每天使用vim,同时多思考怎么样减少按键次数,怎么样改进现在做事的方法,不断改进日常使用vim的方式。总有一天,你会学好vim。最后,我想说一句–“无他,但手熟尔”。

结语

我想我会一直使用vim,直到我码不动一行代码为止。因为,我是Vimer, I Love Vim.