为什么我还在使用 Emacs ?

fmms 12年前
     <p>我在学校里是出了名的Emacs狂人,当人们有Emacs问题的时候总是来找我。往往,人们会问我为什么还在使用Emacs?它是不是太古老了?为 什么不用Eclipse或者Visual Studio呢?对程序员来说,Eclipse和Visual Studio没有奇怪的快捷键,并且有智能提示,这难道不好?<br /> <br /> 我写这篇文章就是为了说明为什么我还在使用Emacs。我并没有情绪化。我真的并没有发现其他编辑器更好,我也很想用类似Eclipse的东西来工作,但是我不能!</p>    <p><img style="width:551px;display:block;height:482px;margin-left:auto;margin-right:auto;" alt="为什么我还在使用 Emacs ?" src="https://simg.open-open.com/show/11426d0f6ad0f188843694f07cf53c04.png" /></p>    <p><strong>Emacs 有 GUI 和 CLI 界面</strong><br /> 我常常需要连接到学校的服务器,由于Emacs可以直接的命令行终端运行,我可以在所有的主机上使用它。在我自己的电脑上,我会使用GTK的界面。而类似Eclipse的IDE是只有GUI界面的,所以不适合在服务器上工作。<br /> <br /> Emacs的文本界面是统一的,也就是说你总是可以使用你熟悉的那些快捷键(搜索,拷贝等等)。<br /> <br /> <strong>Emacs 可以完全键盘操作</strong><br /> 紧接上面的论述,你可以完整的操作Emacs而不需要去碰鼠标。当你进行命令行操作的时候,这是很重要的。正如其他Emacs、Vim的使用者说的,频繁的去用鼠标会降低你的编辑速度。<br /> <br /> 还有,我曾经使用了三年的笔记本,只有触摸板,很不方便。所以我很喜欢键盘操作,而不是那个触摸板。<br /> <br /> <strong>Emacs 拥有命令缓冲</strong><br /> 你 可以通过 M-x 组合键来启用命令缓冲。然后你就可以输入你的命令了。对于那些没有快捷键的操作,命令缓冲可以让你通过键盘去调用这些命令而不用去一级一级的菜单寻找。命 令缓冲也支持自动完成,操作历史。当你需要重复一个操作的时候命令缓冲明显比重新去菜单里点一遍要快速。<br /> <br /> <strong>Emacs 配置很容易</strong><br /> 当你不懂如何配置Emacs才能满足你的要求的时候,你可以去#emacs IRC channel(irc.freeenode.net):<br /> 1. 提出你的问题<br /> 2. 把其他人给你的答案拷贝下来<br /> 3. 粘贴到 .emacs 文件<br /> 4. 使用看看<br /> 配置Emacs就是如此简单。如果你不熟悉Lisp的话,Emacs也有自定义模式可以帮助你生成Lisp代码。<br /> <br /> 由于配置文件是一个文本文件,所以可以很方便的加入版本控制。把你的配置文件放到中央服务器,然后你就可以在别的电脑上使用相同的配置了。<br /> <br /> <strong>Emacs 可以编辑所有的文件</strong><br /> 很少有什么文件类型是 Emacs 不能识别的。而且Emacs可以支持你能想到的和你不能想到的编程语言。我用Emacs编辑过Java,C,C++,Scheme,Haskell,OCaml,R,GAMS,Python,JavaScript,Clojure等等。<br /> <br /> Eclipse很适合用来编辑Java,Visual Studio很适合用来编辑C#.但是他们反过来却不行。我并不想学习这么多不同的工具,这也是我用Emacs的主要原因。不管是什么语言,很多基本的点击操作都是一样的,使用Emacs能让我高效的工作。<br /> <br /> <strong>Emacs 有很多有用的模式</strong><br /> 人们常常拿Emacs自带的Tetris游戏开玩笑,为什么编辑器要带一个这样的游戏?我同意这个游戏没什么用,但是Tetris告诉我们,在Emacs的世界里,没有什么是不可能的。下面我列出了一些Emacs的一些非常有用的模式。<br /> <strong>1. calc-mode:</strong>这是一个计算器,在RPN和infix模式下工作。支持大整数,无理数,复数,向量等等。你可以通过 C-x * * 打开和关闭这个模式。<br /> <br /> <strong>2. epa-mode:</strong>可以打开吉阿米果的文件,修改并且加密保存。我甚至可以加密文件的一部分。<br /> <br /> <strong>3. org-mode:</strong>人们用这个模式来编辑有组织的文档,例如段落、列表等等。它也可以用来维护todo list,几笔记,做项目计划等等。<br /> <br /> <strong>4. ido-mode:</strong>这个模式可以让你方便的通过键盘切换不同的文件或者打开新的文件。<br /> <br /> <strong>5. anything:</strong>这个类似 OS X 的 QuickSliver 工具,你打开这个模式,输入任何东西,它就会返回任何可能的结果,包括文件,目录,命令,man page等等。<br /> <br /> <strong>6. occur-mode:</strong>在这个模式下,你可以通过正则表达式搜索所有Emacs打开的文件。<br /> <br /> <strong>7. ibuffer:</strong>这个模式可以让你同时操作很有文件。例如在所有的c文件中替换“foo”为“bar”。<br /> <br /> <strong>8. tramp:</strong>你可以通过SSH,FTP或者sudo来打开文件。<br /> <br /> 还有很多很多Emacs的扩展能添加其他的很多功能。<br /> <br /> <strong>结论</strong><br /> Emacs并不完美,我认为有以下缺憾:<br /> 1. 没有多线程支持<br /> 2. Elisp不是一个很好的语言,很慢<br /> 3. 同一个文件中使用多个模式很难用(PHP + HTML + JavaScript)<br /> 4. 对支持的编程语言没有语义支持,所以没有智能提示,重构等功能<br /> <br /> 但是,总体而言我还是喜欢Emacs。也许将来Emacs会添加更多IDE的功能。我不知道现在的IDE将如何发展,我希望他们可以回头看看Emacs,并且能提供高级用户喜欢的编辑体验。</p>    <p> </p>    <a href="/misc/goto?guid=4958330044082330026" target="_blank">原文链接</a>