找回密码
 注册
查看: 939|回复: 1

powerful emacs

[复制链接]
发表于 2003-10-14 11:32:01 | 显示全部楼层 |阅读模式
很多人不理解为什么 Emacs 的用户那么多,他们是如此的热爱 Emacs,甚至有的人把它当成了“信仰”。虽然我没有这个信仰,但是它的确很好,我很喜欢用它编辑各种文件,现在来看看 Emacs 能做什么。

据我所知,Emacs 的能力包括

编辑文本
Emacs 编辑文本的能力是最强的了。Emacs 的其它很多功能都是这种强大的编辑能力。Emacs 是人性化的设计,你心里很舒服,对编辑东西充满热情,因为它能帮你完成很多事情。它非常可靠,绝对不会弄坏你的文件,用它编辑文本,你的心里有保障。

可能你开头觉得它的键绑定用起来非常不顺手。但是 Emacs 的优势不在于击键的频率,我们的目标是用一个键,甚至不按键盘,就完成非常多,非常智能的操作。

Emacs 的自动文本处理能力极强。不管是中文还是英语,不管你是写小说,写 HTML 还是 C 程序,我都可以按 M-e 向前移动一句话 (C语句),按 M-k 删除一句话,按 M-} 移动一段话,按 M-p (我自己设定的按键) 删除一段话。因为我事先告诉 Emacs,什么样算是一句话 (sentence-end),什么算是一段话(paragraph-start)。

我只要按 M-q 就可以把一段话排的规规矩矩,而不会把不该断开的地方断开。我只要按一个键就可以把一个数字列表重新排序。我只要在 HTML 文档里按 C-c backspace 就可以把一组tag删掉,按C-c C-c i 就可以插入一个图片,按 C-c C-v 就可以马上把这个文档送到一个 Mozilla 窗口去预览……在 LaTeX 文档里按 C-c C-r RET 就可以把我的文档里选定的区域送给 LaTeX 处理,马上看到效果。

Emacs 有非常友好而强大的人机界面。在搜索替换字符串时,你就能明显感觉到这个优点。它在输入regexp(正则表达式)搜索的时候还能进行 incremental search,而且对部分匹配的字串都有非常漂亮的加量。在替换的时候,它独有 recursive edit,可以打断替换过程,编辑附近的需要纠正的文字,然后继续替换。这个功能对很多人都是非常重要的,因为,在替换过程中,被替换的文字附近的文字很可能会因为它被替换而需要修改。看看这个http://learn.tsinghua.edu.cn/homepage/015450/images/isearch.png,就是 isearch 输入一个正则表达式的情况。

Emacs 的拼写检查能力非常强大。你可以使用 flyspell 随时检查你的拼写错误,看看这http://learn.tsinghua.edu.cn/homepage/015450/images/fly-spell.png 是 flyspell-mode 的 LaTeX 文档, flyspell 知道段落里的某些单词是错的,而 \begin{myquotation} 里的 myquotation 被认为是一个用户自己定义的 LaTeX 环境名字而不认为是拼写错误。

你还可以利用 ispell 的补全功能输入你容易打错的很长的英语单词,看看http://learn.tsinghua.edu.cn/homepage/015450/images/ispell-complete.png

Emacs 的 hippie-expand 能够非常智能的补全你的文本,文件名,和其它很多东西,而这个功能都是用同一个按键完成!

Emacs 能输入和显示多国语言文本 ,是一个真正的国际化程序。Emacs 能识别多种人类语言符号里的语法,它能知道那些符号是括号,那些是标点。看看这个抓图里, Emacs 显示了中文书名号的匹配情况。 《正确》,和《错误>

http://learn.tsinghua.edu.cn/homepage/015450/images/m17n.png
http://learn.tsinghua.edu.cn/homepage/015450/images/parenmatch-corrent.png
http://learn.tsinghua.edu.cn/homepage/015450/images/parenmatch-wrong.png

Emacs 的键是可以任意绑定的。我甚至可以使用 Windows 键盘上的 Win 和 Menu 键来控制。我的 Win + 鼠标中间可以弹出一个 buffer里所有引用到的文件和URL的列表,当我点击它们就可以编辑那个文件或者在 Mozilla 中打开连接。看看这个抓图(ffap-at-mouse)。
http://learn.tsinghua.edu.cn/homepage/015450/images/ffap-mouse.png

你能想到的和你不能想到的编辑功能,Emacs 都能完成。说到这里你可能又会说:“这个功能,vi也有”,“这个功能, UltraEdit 都有”……对,这些能力可能很多其它程序也有,不过同样的功能, Emacs 总是要比别人完成得更好。这一点你用过才能体会到。

而且这些功能只不过是 Emacs 浩如烟海的功能中的一部分,它们还可以被不断的扩充。因为 Emacs 具有非常强大扩展能力。

Emacs 编辑文本方面的扩展简直没法计数。folding, narrow, outline, ... 这些给人带来了非常大的方便,已经被许许多多的人采用。

http://learn.tsinghua.edu.cn/homepage/015450/emacs_outline.html


编辑程序
程序也是一种特殊的文本文件。因为 Emacs 特别适合编辑程序,所以特别在这里提出。Emacs 可以方便的编辑任何类型的计算机语言程序代码,而且为它们提供语法加亮,自动缩进。你可以对程序的语句进行操作。比如向下移动一个 list, 删除整个 C 函数,…… 你可以用一个键就把许多行注释重新排的整整齐齐。

一些扩展可以让你方便的浏览代码,而且它们可以识别代码的语义。列出函数名,参数和类型,变量名,类,宏,方法,defun, include 的文件。当你编辑程序时,Emacs 可以帮你补全函数名,参数等等。你可以在代码中间自由的穿梭。看看这个用 Emacs 写程序的介绍。
http://learn.tsinghua.edu.cn/homepage/015450/wiki/ProgrammingTricks.html

你可以使用 Ediff 来比较两个或者三个文件,Emacs 可以把不同的地方高量,而且修改过的地方有特别明显的颜色不同。我经常用这个功能很快找到我修改过的代码里新出现的错误的位置。看看这个抓图。

你用一个指头就可以让 Emacs 调用编译器编译程序,列出错误列表,启动调试器,在另一个窗口显示当前执行源代码的位置。看看这个抓图就是 emacs 正在调用 gdb 调试程序。

http://learn.tsinghua.edu.cn/homepage/015450/images/ediff.png
http://learn.tsinghua.edu.cn/homepage/015450/images/gud.png

Emacs 的 narrow 和 folding 功能使你能够编辑几万行代码在一个文件里而不会觉得摸不着方向。看看这幅图,你能想像这是 TeX 的源代码的 24000 多行里的一部分吗?你操作它的时候就像只有几十行。 folding 可以使你的很长的文档折叠起来,看看这幅图就是我的一个很长的网页,我在需要的时候可以进入其中一个主题进行编辑,当我退出主题时,整个文档看起来就像只有一页那么长。我可以随意的移动我的主题,就像只移动了一行。 加上一些 elisp,Emacs 就可以成为一个代码浏览器。
http://learn.tsinghua.edu.cn/homepage/015450/images/narrow.png
http://learn.tsinghua.edu.cn/homepage/015450/images/folding.png
http://learn.tsinghua.edu.cn/homepage/015450/emacs_elisp.html#ecb

作为其它程序的界面
Emacs 可以作为很多程序的前端。比如w3m, lynx 浏览器,MAXIMA 计算机代数系统, Scheme48 等 Scheme 解释器,shell,……这些文本方式的程序一旦与 Emacs 接合就拥有了巨大的编辑的能力。看看这幅图,Scheme48 加上 Emacs,就有了语法加亮和方便的热键,可以非常方便的使用Scheme 解释器了。
http://learn.tsinghua.edu.cn/homepage/015450/images/emacs-scheme48.png

作为操作系统
Emacs 就像一个具有编辑功能的操作系统,你可以用它干很多事情。比如,阅读email和新闻组, 浏览网页,管理文件目录 (dired),作为网页服务器,远程编辑文件,记录日程,约会提醒,电子日历 ,查字典,ICQ 聊天,放 mp3,……
http://learn.tsinghua.edu.cn/homepage/015450/images/gnus.png
http://learn.tsinghua.edu.cn/homepage/015450/images/w3m.png
http://learn.tsinghua.edu.cn/homepage/015450/images/dired.png
http://learn.tsinghua.edu.cn/homepage/015450/images/calendar.png
http://learn.tsinghua.edu.cn/homepage/015450/images/dictionary_el.png

煮咖啡
Emacs 的功能已经超越了电脑的范围啦!看看这个很奇特的用途: coffee.el
http://www.chez.com/emarsden/downloads/
发表于 2003-10-14 13:33:07 | 显示全部楼层
以前看过,好文章,顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-7-16 02:10 , Processed in 0.026924 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表