转载:不完全解读 Emacs 编辑器—自由软件的旗舰
L-Emacs 2008-11-17 21:41:10 阅读45 评论0 字号:大中小 订阅
作者: texnician@dRL
希望本文能指引你进入Emacs的神奇世界
一 基本介绍
1. Emacs是什么东西?
Emacs名字的正式由来是"Editing Macros"的简称,即“宏编辑器”,当然这个“宏”
和臭名昭著的“宏病毒”没有半点关系。也有一种说法是rms(Emacs的作者)最喜欢的
一家冰淇淋店的名字。经过将近20年的发展, Emacs的功能不断的增强,现在更通用
的说法是"Emacs is the extensible, customizable, self-documenting real-time
display editor"。
也许你早就从网上,朋友或者某个讨厌的Emacs fake zealot(比如我)那里听说过有
个 叫 "Emacs"的东西。也许你一直以为Emacs是来自遥远的*nix世界的魔鬼,而对它
畏而远之,但实际上,Emacs是一个真正的跨平台软件,在最大限度上保证了平台无关
性,即使是在Windows下,也表现的非常出色,实际上我现在就是在Windows下写这篇
文档。应广大用户的要求,微软 的Visual Studio .Net 2005 beta版中已经实现了简
单的模拟Emacs编辑模式,也许在正式版中会得到进一步的加强。
2. Emacs能做什么?
顾名思义,Emacs的“本职工作”是编辑文本。这里的文本包括的 范围就很大了,像
我现在写的这样简单的纯文本,更主要是用来编辑各种程序的源代码,比如C, C++,
C#, Perl, Python, html, php, lisp, matlab, tex....。Emacs的强大体现在它的人
性化,和智能化。比如不管在哪种语言模式下,都可以用 M-e, M-a 移动一句话,
M-{ M-} 移动一个段落,C-M-f, C-M-b 在平级的语法结构中移动,C-M-a C-M-e 在语
句块中前后移动,等等等等。你不需要去记住每个模式的操作方式,因为它们是如此
的一致,Emacs通常会很“聪明”的识别不同模式下各种语法结构的意义, 在任何模式
下 C-M-/ 都会把一段代码排版的整整齐齐, M-; 可以插入一条注释并缩进到正确的地
方。
用Emacs编辑代码,可以实现语法加亮,折叠,隐藏,大纲模式,自动补全等基本功能
,可以直接调用编译器和调试器来编译,调试程序,可以直接把网页代码送到浏览器
中预览,可以把Emacs当成一个代码浏览器。关于Emacs编写程序方面的扩展实在是太
多了,由于我水平很菜,也没接触过很多,总之当你有自己的需求的时候,直接去网
上找,Emacs很少会让你失望的。
除了被用来编辑文本,Emacs也越来越多的被用来做其它事情,而且往往做得非常出色
。 dired 模式被用来作为文件管理器, 其功能比起同样出色的Total Commander可一
点都不弱。Gnus是访问新闻组和接收邮件的利器,实现了专业级别的 Mail Client 功
能,Gnus 的 FAQ 中这样写道 "不要再问 ‘我能xxxx吗?’之类的问题,因为你得到
的答案通常都是 ‘Yes’"。当然有点夸张了, 因为对于某些"私有"的东西,Gnus 支持
的并不好,比如微软的 hotmail。
Emacs还可以被用来作为很多程序的前端,比如 mysql 数据库, Matlab 软件, 各种
Scheme 解释器。
Emacs还有一大堆“乱七八糟”的功能,Emacs的日历,能支持中国的历法,天干地支
都支持,还能根据你所在地方的经度纬度计算日出日落时间。配合Emacs日历,可以写
日记,约会提醒等等和日程相关的事情。你要是想用Emacs做计算器,查字典,聊天,
播放mp3,使用p2p下载软件,这些也不是不可以。
3. 为什么要用Emacs?
看了前面一大堆功能(虽然不及Emacs实际功能的1%),你可能会说“你丫是不是有毛
病,这些功能都有专门的软件去实现”。你说的没错。当然每个人都有自己的选择习
惯。但是我的感觉是,Emacs不仅仅是能实现这些功能,关键是实现的往往非常出色,
不逊色于专有的软件。而且在Emacs中做这些事情,有一个统一的工作环境,不需要去
熟悉各种软件的操作习惯,在Emacs中你会发现许多看似毫不相关的软件功能,在
Emacs 中变得如此相似,我觉得这种感觉很美妙:P。
Emacs是一个“free software”,这里的“free”是指“freedom”,而不是“免费”
的意思。当然对个人用户来说,获得Emacs通常都是免费的。你永远不会担心“新版本
的完美破解怎么还没出来?”“升级到新版本,key又失效了”,“这个软件要是再便
宜一点我就能注册了”,“这个软件的作者真不厚道,老的注册用户都不能免费升级了
”之类的问题。Emacs属于所有人,它是完全自由的,你可以自由的修改它以实现你需
要的功能,可以自由的和别人分享你修改后的代码,当然这一切都要遵循GPL。
4. Emacs与其它编辑器相比有什么优点?
这个问题我没办法回答,因为我不敢对我不怎么了解的东西妄加评论。尤其是在 et8
这藏龙卧虎的地方(我想你们也一样吧?)。我只能说Emacs 开放的 C+elisp 架构使
其具有几乎无限的扩展性,在扩展性方面,是当之无愧的 No.1. 如果你看到其它某种
编辑器有个很酷的功能,不用怀疑,Emacs 可以实现它,如果你足够强,可以自己动
手或者向某个你熟悉 elisp 高手求助。 总之,没有什么作为一个编辑器应该具有的
功能是 Emacs 实现不了的 。
5. Emacs 与其它编辑器相比有什么缺点?
这个我倒可以说说:P。首先,用 Emacs 会上瘾,在一个没有 Emacs 的机器上,你会
无精打采,没有工作的热情。如果你失去了自己的配置文件,你会变得痛苦万分,因
为重新把 Emacs 配置一遍是很要花一番功夫的(除了