2009-05-03

VIM哲思(一)

世界各地散落着关于VIM各式各样的传说。在那些只言片语的海洋里,她既古老又年轻,既守旧又创新,既高不可攀又平易近人,既独善其身,又俯瞰众生。她神秘的容貌总是被薄而不透的面纱模糊,只有在轻风拂过的时候才似有还无地展露略显苍白的肤色和自信而莫测的微笑。


编辑器之神

世界上有三种编辑器,VIM,Emacs及其它。
这"其它"里就包括我们日常认知范围内所谓的编辑器概念:记事本、写字板、notepad++、UltraEditor32甚至MS WORD。我们坐井观天地认为这些就是编辑器的全部,它们能帮助我们解决编辑文本时所遇到的一切问题:输入、删除、剪切、复制;它们替我们想到了我们所有的要求:缩进、下沉、编码、打印;它们给我们提供了每一个操作对应的所有按钮和菜单——看看WORD臃肿的身躯吧——这才是编辑器之神吧?
归真返璞,编辑器的本质是对文本内容进行编辑并输出。就这个定义看来,上面所列举的所有编辑器都能做到,WORD甚至还能做得更多。但WORD做得太多,在还没有成为一个优秀的编辑器的时候就渴望成为优秀的排版器。这是我们一直混淆的概念,编辑与排版,是彻彻底底的两件事情。如果你用过VIM+LaTeX去完成WORD的任务,你会惊叹于WYSIWYM(所见即所想 What You See Is What You Get)理念带来的高效与惊喜。在编辑器的定义下,评判优劣的标准不外乎两点:功能与效率。

如果把VIM的上百个命令全部做成按钮放到任务栏,每个人都会惊叹与这是怎样的一个怪物!当然,它并没有这么做。
试着打开并编辑一个体积在100M以上的文本文件,你会明白什么叫做效率。这在分析系统日志的时候经常遇到。

也许只有理解了VIM平淡外表遮盖下的深邃内涵,才能去品味这个被称为"The Editor"的编辑器之神,品味那些神性的美。


简洁即美



令所有人意想不到的是,VIM的界面简单到你根本意识不到她已经出现在你的眼前。它没有标题栏、菜单栏、工具栏、状态栏,甚至连输入区域都寄生在SHELL里面!没错,这就是传说中的VIM.VIM的设计符合UNIX哲学中最重要的一条——"KISS"(Keep It Simple, Stupid)。错综复杂的美妙设计,常常使我们的设计能力超出排错能力,结果是代价高昂的废品。
不仅仅是界面,VIM的基本操作命令没有超过2个字母的,这极大的提高了工作效率,相比那些被归为"其它"的编辑器,VIM不需要晃动鼠标进行慢悠悠的定位,也不需要打开一大堆菜单和对话框寻找特定的功能,一切的操作双手都无需离开键盘,从头至尾。不是亲眼所见,你也许永远无法想象熟练使用VIM的高手双手在键盘上翻飞5分钟就能完成其它编辑器50分钟才能修改完成的编辑量。

懒惰改变世界

懒人推动世界进步。从古代发明到工业革命,再到信息革命,懒惰是背后一脉相承的主题。让机器去完成人类重复性的劳动,从而把自己解脱出来抽烟喝咖啡,这是科学家式的思维!VIM的设计哲学正是基于懒惰,这也正是其伟大之处。编辑性的工作往往繁杂而重复,为此,VIM被设计成总可以帮你找到更少的按键方式来实现相同的目标。VIM还设计了多种模式,常见的模式包括命令模式,编辑模式,命令模式等,这个也是和其他编辑器一个很不相同的地方,下面会介绍到。可能有些已经有其他编辑器习惯的人有点不太习惯的地方,但是如果将模式熟悉了就可以发现在不同的模式之间切换是很平常的事情,而且带来的好处是更少的按键和更快的输入。
有时候,懒惰是件好事。

Tools,no policy!

UNIX程序设计的思想是提供给用户“工具”,而不限制用户制定“策略”(Tools,no policy!)。这是一个重要的尊重用户的作法,同时也是极其智慧的选择。

Unix工具箱哲学:“把任务分解成一小块一小块完成,工具专注于各自的领域,并可以组合使用。”

前面提到了用VIM+LaTeX的组合:使用VIM编辑LaTeX的源文件,然后用LaTeX进行排版。VIM在编辑器里是最好的,但是它不提供排版的功能,而LaTeX除了排版什么也干不了,神奇就神奇在它们居然能无缝连接,互相调用,各司其职。同样,Unix下的程序员也都是一套组合行头:VIM+GCC+GDB.
这样的设计思想恰恰契合了老子的哲学:道生一,一生二,二生三,三生万物!

2 条评论:

  1. 还是比较喜欢AutoCAD,双面孔示人。对大多数人,他像word那样友好,标题栏、工具栏、状态栏、命令键。对小部分人来说,可以抛开一切,用键盘发指令,或者加载自己习惯的自定义指令,说到底是一个有矢量图形空间的编程软件。
    软件的效率应和推广结合,效率高的往往没有生命力,因为世界是媚俗的。哈哈

    搬凳子等着看lisp。

    回复删除
  2. 如今想来,WORD的界面也许称不上友好,看着书店里从脚底到头顶密密麻麻的WORD教程,想起大学毕业写论文时有将近一半的时间花在学习和调整WORD上,可现在谁又能说自己精通WORD呢?当解决问题的工具越俎代庖成为待解决的问题,也许就是我们要回头看一看的时候了。

    丑和恶本身并不是媚俗,媚俗是企图用完美和完善的基本信念进行伪饰,以达到取悦世俗社会和迎合公众趣味的目的。没错,世界是媚俗的,博爱以媚俗为基础,但似乎没必要那么在意,正如米兰.昆德拉所说:“媚俗就是对大粪的绝对否定。”

    回复删除