`
isiqi
  • 浏览: 16497664 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

为何 Emacs 和 Vim 被称为两大神器

阅读更多

Emacs 是神的编辑器,而 Vim 是编辑器之神。二者为何会有如此美誉,且听本文向你一一道来。

Author: email: homepage: create: update: 面向的读者:
Jiqing Wu
jiqingwu@gmail.com
http:://hi.baidu.com/jiqing0925
2011-01-09
2011-01-09
经常用电脑处理文本和编程的同学

0. 序章:神器的传说

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

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

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

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

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

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

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

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

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

1. 无敌的可扩展性

1.1 可扩展性给了软件强大的生命

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

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

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

1.2 Emacs是伪装成编辑器的操作系统

有句夸张的话说: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才会成为一种信仰。

1.3 Vim不只是Vi

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

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

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

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

2. 特立独行的魅力

2.1 可扩展性让你倾注了灵魂

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

2.2 独特的操作方式让你中了毒

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就像吸食,慢慢地就会上瘾。 它们会带给你渐渐强烈的快感,但你也向它们献出了自己的灵魂。 这时,你只能称它们为神器。

3. 黑客的编辑器

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被追捧为神器的原因之一。

4. 神器引发的圣战

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

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

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

分享到:
评论
1 楼 斌-黄 2011-09-24  
双修 

相关推荐

    emacs-23.1-bin-i386

    Emacs是一款历史悠久、功能强大的文本编辑器,被誉为“编辑器之神”。它的全名是“Editor MACroS”,由GNU项目开发,是GNU计划的重要组成部分。这个“emacs-23.1-bin-i386”版本是专为32位(i386架构)系统设计的,...

    28个Unix Linux的命令行神器

    本文将详细介绍由Kristóf Kovács收集的28个Unix/Linux命令行工具,这些工具因其独特性和实用性而被称为“神器”。 ### 1. dstat & sariostat & vmstat & ifstat dstat是一款集成了dstat、sariostat、vmstat和...

    如何利用Emacs来调试C++程序

    高手程序员都是用这两样神器进行开发。本人觉得,Emacs之所以厉害,是因为许多在其他编辑器下必须用鼠标点选很多步的操作,在Emacs下都可以通过键盘来完成。大大地节省了你在显示器上找按钮的时间。Emacs在Linux上...

    28个UnixLinux的命令行神器

    ### 28个Unix/Linux的命令行神器 #### dstat & sar - **dstat**:这是一种多功能系统监视工具,可以同时提供CPU、磁盘、网络、内存等系统的实时统计数据。相较于传统的`iostat`、`vmstat`、`ifstat`等独立工具,...

    linux_unix命令行神器

    说到文本处理,vim和emacs是两个被广泛认可的程序员代码编辑器。vim以其模式化编辑著称,通过键盘快捷键进行高效文本编辑,而emacs则是一个功能更为丰富的编辑器,它甚至拥有一整套编程语言来扩展其功能。 远程登录...

    安卓系统上的Terminal 终端模神器 支持各种软件包 2024最新版

    8. **Vim与Emacs编辑器**:Termux支持安装Vim、Emacs等文本编辑器,便于代码编辑和文档处理。 9. **开发环境**:Termux可以搭建Python、Node.js、Go等开发环境,让你在移动设备上编写和运行代码。 10. **Git集成**:...

    Python必学教程 Python开发工具 高效Python编程神器 最全Pycharm教程 - 精编版 共331页.pdf

    《Python必学教程 Python开发工具 高效Python编程神器 最全Pycharm教程 - 精编版》是一份详尽的PyCharm使用指南,旨在帮助开发者深入理解和掌握这款强大的Python集成开发环境(IDE)。PyCharm是JetBrains公司开发的...

    xshell6 Linux远程神器

    对于开发人员,Xshell 6 支持直接在终端内编辑代码,通过内置的文本编辑器或者集成外部编辑器,如Vim、Emacs等。同时,它还具备拖放功能,可以从本地直接拖动文件到远程服务器,简化文件管理。 Xshell Plus版本通常...

    jason解读 atom

    在代码编辑器、文本编辑器领域,有着不少的「神器」级的产品,如历史悠久的 VIM、Emacs 以及如今当红的 SublimeText。另外还有 VS Code、EditPlus、NotePad++、UltraEdit 等一大堆流行的利器,可谓百家争鸣。 然而...

    linux学习神器的简单分享

    ### Linux学习神器详解 在Linux的学习旅程中,掌握一系列实用工具和资源至关重要。本文将详细介绍Linux学习中的核心要素,帮助初学者快速上手并深化理解。 #### 1. **命令行界面(CLI)** - **重要性**:CLI是...

    程序员必备网站.docx

    程序员必备网站 在程序员的职业生涯中,拥有合适的工具和...这款神器附带了很多模板,包括对应于全部 .NET 集合类型的模板以及用于生成存储过程的模板,但之所以能成为神器,那是创建自定义模板的功能,堪称效率大法。

    更有效率的使用VisualStudio

    虽然说Vim和Emacs是神器,但是对于使用VisualStudio的程序员来说,我们也可以通过一些快捷键和潜在的一些功能实现脱离鼠标写代码,提高工作效率,像使用Vim一样使用VisualStudio。当然,如果想真正像使用Vim一样使用...

    收藏28个Unix/Linux的命令行神器

    对于编程人员而言,`vim`和`emacs`是两个经典的代码编辑器,它们提供了丰富的功能和高度自定义的可能性。 `screen`、`dtach`、`tmux`和`byobu`是用于会话管理和多窗口控制的工具。`screen`允许在同一个终端中创建多...

    gocode.exe guru.exe godef.exe

    它支持多种编辑器和IDE,如Vim、Emacs、Sublime Text和VS Code等。安装gocode后,只需将其添加到PATH环境变量中,就可以在编辑器中享受智能提示带来的便利。 2. **guru**: guru是Go语言官方提供的一款强大的代码...

    Dash for Mac 2.0.2 文档查看神器 破解版

    Dash 是Mac下非常方便的文档查看器,一体化集成了许多常用的文档,但是不内购它的完整版就要在搜索完后等待8秒钟,非常影响开发效率。这个分享是Dash的破解,可以自行在App Store下载最新版本的Dash,然后将Dash.app...

    ctag.rar_ctag%2_ctags_sourcecookifier

    生成标签文件后,配合编辑器(如Vim、Emacs或VS Code等)的集成,可以在代码中快速跳转到定义。在Vim中,只需按`Ctrl + ]`即可跳转到光标所在函数或变量的定义处;按`Ctrl + t`则能返回原位置。 **4. 插件支持** ...

    cpp-一个类似于ack但更快的代码搜索工具

    7. **集成开发环境(IDE)支持**:由于其强大和易用,ag被许多IDE和编辑器整合,如Vim、Emacs、VS Code等,使得在这些环境中进行搜索更加便捷。 8. **社区支持**:作为开源项目,ag拥有活跃的开发者社区,不断修复...

    C/C++学习的良好资源和开发环境

    - **文本编辑器**:对于喜欢轻量级工具的开发者,Vim、Emacs和Sublime Text等编辑器也是不错的选择,配合GCC或Clang编译器也能完成开发工作。 - **命令行工具**:Windows下的MinGW和Linux/Unix下的GCC或Clang,是...

Global site tag (gtag.js) - Google Analytics