为
什
么说
Emacs
强
及如何学
习
Emacs
方 伦钢
下文中 Emacs 均指 GNU Emacs , XEmacs 与 GNU Emacs 相似。
转 眼用 Emacs 已 经 有两年,越来越心 悦 诚 服于它的 强 大功能。 常常是我 脑 子里 闪 出个念 头 “如果 Emacs 有 这 个功能就好了 ”, 结 果一 查 手册,嘿, Emacs 还 真的就已 经预备 好了。
想到 刚开 始 时 自己的将信将疑;我相信很多朋友看着不起眼的 Emacs 界面肯定也想象不出 Emacs 究竟有什 么 好,更 别 提改用 Emacs 了。本着“好 东 西要大家分享 ”的精神,我就 结 合自己 这 两年来的心得 简单 介 绍 一下我 认为 很 强 、很 实 用的 Emacs 的功能并就如何学 习 Emacs 发 表一下自己的想法。希望能 对 想了解的 Emacs 的朋友有所帮助。如果能因此拉几个人入伙更好。由于篇幅的限制, Emacs 的抓 图 就不奉上了,也 许 有空的 话 我可以上 传 几 张 到 blog ( http://jixunuli.cublog.cn )上。
方 伦钢
下文中 Emacs 均指 GNU Emacs , XEmacs 与 GNU Emacs 相似。
转 眼用 Emacs 已 经 有两年,越来越心 悦 诚 服于它的 强 大功能。 常常是我 脑 子里 闪 出个念 头 “如果 Emacs 有 这 个功能就好了 ”, 结 果一 查 手册,嘿, Emacs 还 真的就已 经预备 好了。
想到 刚开 始 时 自己的将信将疑;我相信很多朋友看着不起眼的 Emacs 界面肯定也想象不出 Emacs 究竟有什 么 好,更 别 提改用 Emacs 了。本着“好 东 西要大家分享 ”的精神,我就 结 合自己 这 两年来的心得 简单 介 绍 一下我 认为 很 强 、很 实 用的 Emacs 的功能并就如何学 习 Emacs 发 表一下自己的想法。希望能 对 想了解的 Emacs 的朋友有所帮助。如果能因此拉几个人入伙更好。由于篇幅的限制, Emacs 的抓 图 就不奉上了,也 许 有空的 话 我可以上 传 几 张 到 blog ( http://jixunuli.cublog.cn )上。
Emacs 的 优 点
1. 首先, Emacs 是“跨平台”的。大部分操作系 统 ( UNIX 、 windows )都有相 应 的 Emacs 。所以不用担心 换 了 开发 平台后又要重新学 习 一 种 新的 编辑 器。而且 许 多操作系 统 默 认 就安装了 Emacs 。
2. Emacs 的文本 编辑 功能十分 强 大,特 别 是 对编 程的支持,感 觉 十分 贴 心。 毕 竟 Emacs 是程序 员开发 的,程序 员 最清楚哪些功能能帮助程序 员编 程。
3. Emacs 高度可定制。 这给 我 们 充分的自由。当然如果不愿(或 暂时 不会)定制,完全可以用默 认 的配置。
4. Emacs 高度可 扩 展,而且各 种扩 展的 风 格 统 一。据 说 Emacs 的 设计 使得它十分易于 扩 展。 设计 上的 问题 我不清楚,但是从用 户 的角度来看, Emacs 安装插件确 实 很方便而且插件也确 实 很多。尤其是 对 与程序 开发 工具的集成(如 gcc , cscope 等)提供了极大的方便。 经过 配置, Emacs 简 直就是一个 IDE 。
5. Emacs 提供 图 形的交互界面,但同 时 又 彻 底支持命令行模式,用 户仅 用 键盘 就可以 实现 所有的操作。 键盘 比鼠 标 方便?很多 时 候是 这样 的,要不然 为 什 么 快捷 键 叫 “快捷” 键 。
Emacs 的功能
本 节 ,我将 简单 介 绍 一下我在日常使用中感 觉 比 较 方便的、 Emacs 21.3 安装包自 带 功能和插件 :
* 强 大的文本 编辑 功能:
o 对许 多 编 程 语 言(如 c/c++/java/sql/shell 等等)的支持: 语 法高亮、代 码缩进 、多 种 形式的代 码 折叠、 块 操作等等; 还 可以通 过 安装插件支持新出 现 的 语 言。安装插件 color-theme 后可以方便的改 变语 法高亮的 颜 色。
o 代 码补 全( hippe expand )与 IDE 常 见 的代 码 提示不太一 样 。二者各有千秋,如果能兼具两者最好了( eclipse 就两 种 功能都具 备 )。
o 自 动 代 码 插入。主要三 种 形式:一是 abbrev : 输 入 缩 写自 动 替 换 成完整形式;如 输 入 “cc”自 动 替 换 成 “const_cast”。二是skeleton: 输 入命令后,自 动 在 选 中的代 码 周 围 加上 预 制的代 码 ;例如我 选 中一段代 码 然后 输 入命令 “trycatch”, 选 中的代 码 就会被包裹在 try/catch 块 中。 Skeleton 还 可以定 义 成 abbrev 。三是auto insert: 创 建文件 时 根据模板自 动 生成代 码 ,例如版 权 声明。
* EDIFF
Ediff 是Emacs集成的比 较 与合并( merge )文本文件内容的工具。 有了它,你可以方便地比 较 两个(或三个)不同文件、文件 夹 。 较 其它比 较 工具而言,它的特点是它与 编辑 器(即 Emacs 本身)集成在一起,所以在比 较 的 过 程可以方便的 编辑 被比 较 的文件。例如 语 法高亮仍然有效。
它 还 提供了 对 版本控制工具的支持,例如用 ediff-revision 命令可以方便的比 较 不同版本之 间 的区 别 。
* CVS 与 VSS
Ediff 的一个重要用 处 就是 为 版本控制提供帮助。 Emacs 自 带 了 CVS 等 传统 版本控制工具的接口,使用 这 些接口可以非常方便地 调 用 CVS 等。比直接在命令行使用 CVS 方便多了。
如果使用微 软 的 VSS ,安装一个名叫“ source-safe ”的插件就行了。
* Dired
在命令行模式下, 删 除、拷 贝 、重命名等文件操作有 时 是件挺麻 烦 的事情。常常需要 键 入了一 长 串的路径和文件名;在命令 执 行后才 发现 命令写 错 了。如果 还 和我一 样总记 不住路径的 话 就更麻 烦 了。
在 Dired 模式你可以方便的 进 行 单 个或批量文件操作:新建、 删 除、 查 看、 复 制、重命名、 查 找(包含某字符串、正 则 式的文件)等。
* Eshell
Eshell 是用Emacs的 专 用 语 言 elisp 实现 的 shell 。启 动 后它内嵌在 Emacs 中。因 为这 个特点,它可以充分利用 Emacs 的 资 源,好 处 真是妙不可言呀,只能 说 “ 谁 用 谁 知道 ”。
* Cscope
Emacs 还 有 cscope 的接口。利用 该 接口,你可以在 编码 的 过 程中随 时 使用 cscope 查 找函数、 变 量等等。同 样 ,比直接在命令行使用 cscope
* GCC 、 GDB 、 CC 、 DBX
Emacs 内置以上四 种编译 器、 调试 器的接口,呈献 给 用 户 一个可 视 化的 编译 、 调试环 境。无 论 是 编译还 是 调试时 都可以方便的定位到想看的源 码 上。
* Speedbar
Emacs 内置的工具, 类 似于 IDE 中常 见 的 浏览 窗口。也是 ECB 的基 础 之一。
* Color-theme
前面已 经 提到 过 了。 Emacs 是高度可配置的,所以你可以定制 语 法高亮的 颜 色搭配。 但是我 这样 缺乏美 术细 胞的人是不可能配出好看的 语 法高亮来的。幸好有 热 心人写了插件 color-theme 。它提供了很多配色方案,肯定有一款合你的意。我 选 的是 gnome2 。
* Tabbar
有了 tabbar , Emacs 会将所有打 开 的文件以 tab 页 的形式 显 示出来(就像 ultra-edit 那 样 )。
* ECB
全称是Emacs code browser,安装之前要先安装cedet。我 认为 它是 speedbar 的升 级 品,看上去很花。但老 实说 ,我 觉 得熟悉 Emacs 后,它的用 处 不大。 刚开 始用 Emacs 时 有它可能会 觉 得方便些。
* Ange-FTP 、emacsclient、gnuclient
Ange-ftp 让 你能 够 方便的 编辑远 程 ftp 服 务 器上的文件(和 Ultra editor 的功能一 样 )。
Emacsclient 和gnuclient使得Emacs成 为 一个文本 编辑 的 server ,可以方便快速地将 编辑 文本的工作 转 到 Emacs 上。 本人表达能力有限,没用 过 Emacs 的人可能不知 这 句 话 所云,否 则 就知道 这 是一个很好的功能。
* WOMAN
Emacs 集成的看man page的工具,比MAN(unix自 带 的工具)要方便。 WOMAN ( 对应 于 MAN ) 这 个名字体 现 了大牛 们 的幽默,全称是 With Out Man 。
* VisEmacs
用 惯 了 Emacs 后,也 许 就会和我一 样 无法忍受 VC 的代 码编辑 器了。不得不用 VC 开发 windows 的程序 时 , VisEmacs 可以减 轻 我 们 的痛苦。 给 VC 装上 这 个插件后, 编辑 界面没有任何不同,但是 编辑 代 码时 就会自 动转 到 Emacs 。
如何学 习
以上 说 了 这么 多,也 许 你会 关 心要花多大代价才能全部掌握。确 实 ,要体 验 Emacs 的 强 大需要花些 时间 ,但是 绝对 不需要花很多 时间 。当然啦,如果你愿意,你可以持 续 的投入 时间 ,从 Emacs 持 续 的得到回 报 。曾 经 ,我一度把看 Emacs 手册作 为 放松,因 为每 次看都能学到一些 让 我 happy 的新技巧。
Emacs 入 门 只需要也 * 必 须 * 要学 习 Emacs 的一些基本概念。 这 大 约 需要一个小 时 左右。 Emacs 自 带 的手册使用很方便,也写得很好(再次向 Emacs 及其手册的作者 们 致敬)。启 动 Emacs 后可以用鼠 标 从菜 单栏 打 开 手册。搞清楚 buffer 、 mode 、 kill ring 、 undo ring 、 region 、 ctrl 键 、 meta 键 等概念就算会用 Emacs 了。如果你是 Viper ( 习惯 使用 vi 的人),你也 许 会需要一些 时间 来适 应 。需要提醒的是: Emacs 启 动 相 对较 慢而且 设计 Emacs 时设 想的 应 用就是同 时编辑 多个文件。所以一般只需也 应该 只启 动 一个 Emacs 进 程才能充分利用 Emacs 的好 处 。我 现 在的工作 场 景是: 每 天早上一上班就 远 程登 录 到 Solaris 服 务 器上,然后启 动 Emacs ;接下来所有的工作都通 过 Emacs 完成,登 录 shell 的作用几乎只是用来启 动 Emacs ;下班 时 ,退出 Emacs 关 机走人。
会用 Emacs 之后就可以 开 始用它 进 行工作了,遇到需要什 么 功能的 时 候再 现 学什 么 功能。前面提到的那些功能都很容易掌握,一般花几分 钟 看看手册就行。 别 忘了,各 种扩 展的 风 格是 统 一的,所以有 时 不看手册,想当然的去操作也没 错 。倒是各 种 各 样 的小技巧多多益善, 积 累起来需要一些 时间 。但那只是 锦 上添花,不用急着学会。如果使用 过 程中遇到一些小 问题 ,可以上网 查 。网友 们 的 热 心程度是毫无疑 问 的。
一个合适的配置文件能 让 Emacs 更加 贴 心。找一个 现 成的配置文件,然后根据需要修改成自己的配置是不 错 的 办 法。我的配置文件可以在我的 blog 上找到( http://www.cublog.cn/u/13684/?u=http://www.cublog.cn/u/13684/showart.php?id=72609 )。
资 源
www.gnu.org
GNU 的老 巢 ,也是 Emacs 的官方网站。
www.emacswiki.org大量的Emacs
资 源。很多牛人也在上面,或 许 回答你 问题 的就是 Emacs 的 开发 者呢。
www.linuxforum.net
中国linux 论坛 。里面有个 专门 的 Emacs 版。 Emacs 使用中遇到 问题 可以到 这 来 查 、来 问 。