Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1319929
  • 博文数量: 482
  • 博客积分: 13297
  • 博客等级: 上将
  • 技术积分: 2890
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-12 16:25
文章分类

全部博文(482)

文章存档

2012年(9)

2011年(407)

2010年(66)

分类: LINUX

2011-08-31 22:18:07

在这个蔚蓝色的星球上,流传着两大神器的传说: 据说Emacs是神的编辑器,而Vim是编辑器之神。

追求独步天下的高手和低手们争着一睹它们的风采, 可看到它们朴素单薄的界面后,不禁心下怀疑: 这就是神器吗?甚至有人生了轻视之心。

肤浅的人嗤之以鼻,说:什么年代了,还抱着这么老土的玩意不放, 真他妈Geek!同学,请冷静下来,听我说:它们的确够老了, 都几十年的寿命了,但你想想为什么,为什么这么古老的编辑器, 却有越来越多的人皈依它们。

Windows下用UltraEdit和Editplus的人质问: 它们到底比UltraEdit和Editplus好在哪里?我说: 不可同日而语。

连UltraEdit和EditPlus都没用过的同学问:它们就相当于Linux上的 Notepad吧?我说:请你从我的眼前消失。

一些人勇敢地拾起了Vim或Emacs,却发现学习曲线陡峭而漫长, 于是在没发现它们的强大之前就放弃了,说: 太难用了,把键盘当鼠标用的烂玩意,有什么好的?

还是有一些人留下来了,坚定地守护着这两大神器。 一些说葡萄太酸的人想离开又不甘心,总是问: 它们到底神在哪里啊? 我不禁想起了李宗盛的几句歌词::

有人问我你究竟是哪里好, 这么多年我还忘不掉? 春风再美也比不上你的笑, 没见过你的人不会明了。

也许你不会明了,我还是要努力讲一讲。

曾几何时,Windows用户对软件的可扩展性没有概念, 他们只能对他们使用的软件进行非常有限的定制。 扩展软件的权利保留在软件开发者手中。软件的使用者 如果想要新的功能和特性,只能等待软件的升级。 有能力的用户等不及了,为了添加自己想要的功能, 从0开始写了一款新的软件。 就这样,新的功能意味着新的软件,Windows下的软件 前赴后继,迅速地更新换代着。因此, Windows下的软件都很短命。

Linux和开源软件渐渐流行起来,人们才发现: 可扩展性才能给软件强大的生命。 在MS的VS横行的今天,Eclipse为什么被评为最好的IDE? 就是因为它在IDE中最具可扩展性。 在IE几乎一统天下的时候,为什么Firefox能夺走越来越多的用户, 也是因为它的可扩展性。 提供了良好的扩展接口,用户自然会写出各种各样的插件, 来满足用户自己形形色色的要求。 这样,软件在用户的推动下自然变得强大了。

Emacs和Vim没有被时代淘汰,反而越发强大, 也正是因为在数不清的编辑器中,他们具有无可匹敌的可扩展性。

有句夸张的话说:Emacs是伪装成编辑器的操作系统。 细细想来,这句话并不夸张。

Emacs其实是个Lisp的解释器,因此可以用Lisp灵活地扩展。 Lisp是什么东西,这同样是种很有生命力的编程语言。 在C语言还没有发明的年代,MIT的人工智能实验室写ITS操作系统时, 一部分用的是汇编语言,还有一部分就是用的Lisp。 现在,Lisp仍在人工智能研究领域广泛使用着。

有这么牛逼的扩展语言,注定Emacs向着无所不能的方向发展。 渐渐地,人们用Emacs不再限于写程序,写文档, 而且在Emacs里管理文件系统,运行终端,收邮件,上网, 听音乐……,真是一发不可收拾。甚至,有人用Emacs控制咖啡机煮咖啡。

这种大而全的扩展,背离了“一个程序只做一件事并做好它”的 Unix哲学,被Unix的忠诚用户所诟病。可是真的背离了吗? Emacs说过自己是一个编辑器吗?

正是因为Emacs的无敌的可扩展性,人们才分不清Emacs到底是不是一个编 辑器了。但,就是有人喜欢这种All-in-One的哲学,喜欢在Emacs中完成每 件事。所以才会有人写《生活在Emacs中》,所以, Emacs才会成为一种信仰。

Vim是Vi最受欢迎的变种之一,除了继承了Vi迅捷的编辑方式, Vim的功能已经比原始的Vi强大得多。 这也得益于它可以用Vim脚本无限地扩展。 上已经有数千个脚本了,给Vim增加各种各样的特性和功能。

为了证明Vim的可扩展性不输于Emacs,也有用户写了 在Vim中玩游戏、运行Shell、和集成GDB在Vim内部调试的插件。 客观地讲,Vim的脚本语言与Emacs的ELisp相比,略显逊色, 但这丝毫不妨碍它把Vim扩展成非常优秀的编辑器。

说到底,Vim的前身Vi和Emacs的设计采用了不同的哲学, Vi更符合Unix传统,它通过管道机制和系统内各种积木工具打交道, 它讲究的是和系统内的工具程序协作来完成用户的任务。 和Emacs相比,它的定位很明确,就是要做一个强大的编辑器。 因此Vim的绝大部分扩展,都是为了更好地完成编辑文本的任务。

海纳百川,有容乃大。Emacs和Vim通过别的编辑器无法比肩的可扩展性, 不断吸收广大用户的智慧,是它们能成为“神器”的原因之一。

一旦你意识到Vim或Emacs的强大,你就踏上了不停发掘它们潜力的漫漫长 路。你不停地改进自己的配置文件,你不停地搜索更好的插件,甚至有一 天你开始动手写自己的插件。就像剑客保养自己的剑一样,你也甘心花时 间提升你的Vim或Emacs。经年累月,不知不觉,你已经在那把剑上倾注了 你的灵魂。

Emacs和Vim有着迥异的操作方式,却成了Unix/Linux世界中两种代表性的 操作方式,有些软件的操作方式类似Vi,而有些软件的方式类似Emacs, 甚至有些软件提供了Vi的键绑定和Emacs的键绑定让你选择。 而无论哪种操作方式,对Windows用户来说都是古怪的。 虽说古怪,多少代人也验证了这两种操作方式的高效。

Emacs号称Ctrl到死的编辑器。其实它几乎用了所有的辅助键, 听说过没有,Emacs = Esc + Meta + Alt + Ctrl + Shift。 所以高德纳大师说操作Emacs,就像弹奏管风琴。 Emacs使用非常多的组合按键,这大概也是它高效于其它无模式编辑器的原 因之一。你也可以定义自己的组合键序列,调用自己写的lisp函数, 完成自己想要的功能。

Vi一向是以快速的文本编辑闻名于世的。它的按键更简洁,通常是单个字 符按键,就实现某种操作。但这是以有模式为代价的。你要不停地按Esc在 从它的插入模式返回Normal模式。客观得讲,在文本编辑方面, Vim比Emacs高效,因为它提供了一些Emacs没有对应功能的操作来辅助高效 的文本编辑。但它的模式切换也让一些人受不了,于是那些人选择了 Emacs。

不管你选择了Vim还是Emacs,你都要为习惯它们独特的操作方式而努力, 这是一个技艺积累的过程。当你习惯了Vim或Emacs,你会有欲罢不能的感 觉,你希望用它们完成尽可能多的任务, 因为你再用别的编辑器也已经不习惯。

用Vim或Emacs就像吸食**,慢慢地就会上瘾。 它们会带给你渐渐强烈的快感,但你也向它们献出了自己的灵魂。 这时,你只能称它们为神器。

Vim的前身Vi的作者Bill Joy和Emacs的作者Richard Stallman 都是那个时代著名的黑客,所以这两款编辑器一开始面向的主要用户 就是写程序的人,现在仍然是。 它们对编程加入了越来越多的支持,如语法高亮、智能缩进、关键字补全 甚至集成调试。也有越来越多的程序员从IDE转向了Vim和Emacs。

用Vim和Emacs编程到底有什么好处? 我想首先是它们高效的编辑操作会提高你的编程效率。 其次你可以用它们完成各种语言的编程,所谓一剑在手,夫复何求。 你不用再因为编程语言不同去学习不同的IDE的使用, 那些庞大的IDE的升级换代也与你再不相关, 你把精力用于学习编程语言本身就好了。 听说Google和微软内部开发也都不用IDE的, 他们也会用Emacs或Vim。

因为我写的程序不多,还不能深入体会用Vim或Emacs开发程序的乐趣。 我只是觉得这很酷,你看,Linux之父Linus多年来用的是一款 MicroEmacs,它比GNU Emacs或XEmacs少许多功能,但Linus就是用它在维 护Linux。 微软的大牛Don Box,Com之父,一直用Emacs, 他说谁也不能夺走他的编辑器。他还在网上放了一段他用Emacs写C#程序的 视频。

编程大师们的选择,也是Emacs和Vim被追捧为神器的原因之一。

Vim用户和Emacs用户有着旗鼓相当的品位,应该互相欣赏才对。 现实却是,忠诚于Vim的用户和忠诚于Emacs的用户互不相容, 常常没完没了地打口水仗。Emacs用户说Vim的操作方式单一而古怪, Vim用户说Emacs体积庞大,启动缓慢。

很有点一山不容二虎的意思,大概因为二者都处于神器的高度,才会斗争 不断吧。也可能是因为二者截然不同的设计哲学吸引的用户在价值观上也 互不认同。

正因为两者难分高下,新人总是在Vim和Emacs之间犹豫不定, 很难决定到底要皈依哪一个神。

====


阅读(642) | 评论(0) | 转发(0) |
0

上一篇:vim 命令(全)

下一篇:使用VIM进行块注释

给主人留下些什么吧!~~