《vim从入门到放弃》001

为什么要用vim

如果你不用连接服务器,只是在本地使用一个文本编辑器,应该没有什么必要再学习vim这个文本编辑器了。但是,你要经常使用ssh这样的工具,在远程的linux服务器上编辑文件,如果在不同的服务器上,比如redhat, centos, ubuntu, fedora,freebsd等等,vim几乎成了唯一的选择,这些系统几乎都会默认安装vim,但是并不一定会安装其它的编辑器。所以,这个时候,会用vim还是非常的有用的。

有没有人真的使用vim来做任何的文本编程呢?毕竟世界之大,无奇不有,这种变态还是有的,比如说我就是了。只要是用输入文本的地方,我就用vim。我甚至在chrome流览器上装了一个vim插件。

一个能到处使用vim的人,一定有一些故事。在10几年前,我在劳务市场找了一个工作,当了程序员,在大学时候,对vim的使用只会保存退出这几个操作,当然,我恨死了vim,这个东西,早就应该扫入历史的垃圾堆,我当时这样想。我去工作的第一天,公司给我了一台电脑,是的,一台崭新的Thinkpad电脑,性能很强大。当我开机以后,我看到了一个我从来没有用过的操作系统,一个满身通红的小妖怪拿着一个三钉耙,无论从哪个角度看,都像是在对我嘲笑。我知道了这个系统叫FreeBSD。

当然,这个系统用起来,让我满身的不舒服,让我更不舒服的是,我的上司告诉我,以后开发就在这个系统上,一个连纸牌和扫雷都没有的电脑上,我听了以后,在9月的高温里,我觉得从内到外都凉透了。没过几天,我才知道,这个世界上除了FreeBSD,还有个操作系统叫Solaris,还真是刘姥姥进了大观园,看啥都新鲜,我们开发的软件至少要确保在FreeBSD和Solaris上运行,这也是跨平台了吧,跨了两个极其小众的平台。

如果说FreeBSD奇怪的话,起码它还是个电脑的样子,我几乎没有机会看看当时Solaris安装在啥地方,又过了好久,公司要从SUN公司买一批Solaris系统,我才见到那种电脑,是的,一个不像电脑的电脑。没有显示器接口,没有键盘接口,没有鼠标接口,只有一个叫串口的东西,一个电源开关,一个网线接口。就像是一个主板,外面装了个铁盒子。我甚至都不知道如何设置它。vim是唯一一个在Solaris和FreeBSD不用安装就可以运行的软件,就像windows上的记事本一样。

长话短说,就像所有得了斯德哥尔摩综合症的人一样,我在被vim不停的摧残和蹂躏中,我爱上了她。我先是讨厌她,后来适应她,再后来喜欢她,现在,我已经离不开她了。

我现在觉得,在键盘上移动10个手指头比一只手移动鼠标要快的多。这就是我使用vim的(说服我自己的)理由。

vim的历史

vim的历史太长了,简直要和个人电脑的历史一样长,如果算上vim的爸爸,一个叫vi的编辑器,这个历史就比个人电脑的历史要长了。vi在1976年就发布了,他的作者是Sun公司的创始人之一,同时也是Java语言的重要支持者,他的名字叫Bill Joy。当时,个人电脑这个东西,很少有人买,也没多少人有兴趣,几乎所有的电脑都是学校或者商业机构才能买的起。当时大学里已经在使用Unix了,上面的王牌编辑器叫ed,每次只能处理一行,是的,一行。Bill Joy觉得,他能搞个处理全屏的文本编辑器,就就是vi的由来,取的是visual interface的首字母。

但是,他只做了一半,就去忙其它事情了,本来,他承诺要给这个vi编辑器写一个GUI的界面,用这个GUI来操作vi的命令部分,但是,他只做了命令的部分,就去忙更重要的事情了(比如建一个市值千亿美金的SUN公司)…但是,他就先让人用着这个半成品,等他忙完了,就来把GUI的部分写完,这一忙,就是永远。人们适应了这个半成品,完全不想要GUI了,后来无数的人尝试给vi写了GUI,但是,没有人用,就是喜欢这个半成品。

同样的故事还发生过一次,在lisp上,这个就不细讲了,这就是半成品流行的两个好例子,让大家用了半成品以后,等到成品出来了,结果,人已经爱上半成品了。

在1988年,有个叫Bram Moolenaar的家伙,他买了一台Amiga电脑,上面没有一个好用的编辑器,然后,他就基于一个开源软件开始的,vim的本意是vi improved,不管如何,在众多试图改进vi编辑器的努力中,vim取得了最大的成功。

那是不是意味着vim的代码是非常优秀呢?以我来看,vim是代码比较糟糕的C语言之一,比起SQLite这样的开源代码,vim的代码质量实在是不敢恭维,无论是在一个中就包含25,000多行C语言,还是经常会出现连续的500多个#ifdefs语句,还是在一个文件中有2,000行定义的常量。甚至由于历史的原因,vim的有些源代码文件既不是UIT-8格式,也不是ASCII格式,并且为了支持一些早就过时的平台,比如BeOS,VMS,vim中仍有大量的代码,几乎没有人愿意去读vim代码,当你知道一个eval.c文件中有25,000行代码,这简直就是恐怖袭击。

这仍旧无法阻挡vim是最成功的文本编辑器之一。在开源的世界里,当然会有人想改进这种情况。可能有些人天生就适合看让人头晕的代码,在vim社区里,真有有人整理了vim所有的代码,然后提交了一个push,这次push,实在是太惊天地,泣鬼神了,已经在Google工作的Bram Moolenaar直接不敢将这些代码合并进去。因为,这变化有些太大了,步子太大,有点扯着蛋了。

没关系,在开源的世界里,你不合并,我就重新弄一个,于是,一个叫neovim的项目诞生了,号称自己是vim的未来。这个项目已经非常的稳定了,我已经用了好长的时间,除了一些插件要自己动手修改一下,其它的方面,我认为是比vim好一些的。号称比vim少了至少30%的代码。

vim当然不会坐视不理,于是在发布的vim 8.0中,几乎neovim最主要的几个优点,被vim一个不留的全部复制粘贴了过去,而且,也说自己比原来的自己少了30%的代码,这…… 如果不是开源项目,不禁让人以为,这就是阿里巴巴剽窃的呢……

这是我喜欢看到的开源界的竞争,不撕B,不谩骂,不会背后捅友商一刀,同样的事情也发生在众多的开源项目上,不逼逼,你不采用我的意见,我就自己干出一番事业,让你来看看。比如Ruby on Rails项目和Merb曾经有理念之争,最后两者合并,取互相的优点,这是一种不是死要面子的胸怀。

知道一些历史

知道一些历史,还是挺有趣的,我一直这样认为,所以,这一节,只讲了一点历史,这个《vim从入门到放弃》,我会写下去,日拱一卒,不期速成。

刘延栋 wechat
欢迎扫一下关注我的公众号:软件那些事儿
欢迎收听我的电台,你的支持将鼓励我继续前进