方永、南天紫云

道亦有道

Emacs,Lisp&Vim
2011年08月13日

习惯、性情、信仰,决定了你是你。

先说Emacs。

以前也用,近一段时间把默认编辑器换成了emacs,并打算弃用vim一段时间。几个月之后就是现在又换回vim,文本查看换成了leafpad。

说说自己的看法:首先,不要偏激,不要人云亦云,也不要迷信化。在我看来,emacs最根本的吸引我的地方就是它的按键序列,这个按键序列和vi系编译器的按键序列代表了linux世界乃至所有操作系统中程序的按键方式。而且,emacs的按键方式(功能组合键)占了绝对优势。这两种序列的区别就在于emacs的按键方式不存在切换,有很多时候比如写一篇无格式的文章时不切换的序列显然较优,对于保存,Windows中notepad的Ctrl+S,即使是emacs的Ctrl+X,Ctrl+S也显然比vi的:w<Enter>a感觉要好一些。对于用bash的人来说,相信很多人是用默认的emacs键绑定的。对于我来说,emacs它们的按键序列就是它们存在的意义。

再说vi系,vi系有着sed,vi&vim这些一脉相承的编辑器,一贯继承着UNIX哲学,做一件事,并把它做到最好,精巧而强大。在*nix世界里,你可以不会使用emacs,但你不能不会vi。vi系在编写程序时有其独特的优势,这个用不着多说,每个程序员只要试一试就知道了,尤其是在调试时按得酸痛的肌肉会让你抓狂,少按一个键,少一次肌肉的抽搐,那都是一次解放。而emacs系说不定就会让你肌肉痉孪。GNU的狂热者在用emacs,是因为emacs用GPL发布,而且,GNU项目一直推崇emacs,而vim用更宽松的版权声明。

Vim是慈善软件,它可以以高度兼容vi的模式运行。很多发行版的vi仅仅是指向vim的一个链接。vim的许多功能都是为编写程序而出现的,而它的终极目的是只想做个编辑器。它做到了,它就是许多人想要的那个编辑器。

再说Lisp,有人将Lisp尊崇为计算机语言的鼻祖,“现代的计算机语言都只是学了一点它的皮毛而已”。 但是别忘了同时代出现的Fortran。fortran开创了一个时代,lisp并没有。lisp有好的理论,但没有好的编译器,这或许是个原因,但是fortan理接近于自然语言的语法更有说服力。不能不说,lisp的理念确实很先进,近些年,函数式编程是个很火的概念,但是不要忘记,计算机语言也是在发展的,新的理念,新的需求,新的解决方式不断在出现,执著于一点,很容羁绊住自己的脚步。但是,需要注意的是,lisp形式上非常统一,很多人都非常迷恋这种理念和设计,这也让人们看到了计算机语言的一个方向。