Emacs 教程
Emacs
Emacs(/ˈiːmæks/,源自 Editor MACroS,宏编辑器),是一个文本编辑器家族,具有强大的可扩展性,在程序员和其他以技术工作为主的计算机用户中广受欢迎。最初由 Richard Stallman 于 1975 年在 MIT 协同盖伊·史提尔二世共同完成。这一创意的灵感来源于 TECO 宏编辑器 TECMAC 和 TMACS,它们是由盖伊·史提尔二世、Dave Moon、Richard Greenblatt、Charles Frankston 等人编写的宏文本编辑器。
自诞生以来,Emacs 演化出了众多分支,其中使用最广泛的两种分别是:1984 年由理查·斯托曼发起并由他维护至 2008 年的 GNU Emacs,以及 1991 年发起的 XEmacs。XEmacs 是 GNU Emacs 的分支,至今仍保持着相当的兼容性。它们都使用了 Emacs Lisp 这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。
在 Unix 文化里,Emacs 是黑客们关于编辑器之战的两大主角之一,它的对手是 vi(Vim)。
XEmacs
1991 年,Lucid 公司的 Jamie Zawinski 等人以 GNU Emacs 19 的一个早期 alpha 版为基础,添加了一些新的特性,开发出 Lucid Emacs。很快,Lucid Emacs 的开发与 GNU Emacs 渐行渐远,最终双方的团队放弃了将两者合并的努力。Lucid Emacs 被重命名为 XEmacs;至今为止,XEmacs 仍然是最流行的 Emacs 变种之一。
其他 GNU Emacs 的派生版本
其他的派生版本,包括:
- Meadow - 一个 Windows 下的日语版本
- SXEmacs - Steve Youngs 实现的派生版本,基于 XEmacs
- Aquamacs - 一个致力于与苹果的 OS X 集成的 Emacs 版本
其他 Emacs 变种
除上述编辑器以外,还有很多不基于 GNU Emacs 的编辑器,有些项目的目标是创建一个精简版的 Emacs。在 1980 年代,GNU Emacs 只能在很高端的电脑上运行,这就为精简版的 Emacs 实现的出现奠定了基础。还有一些 Emacs 变种是为了克隆一个完整的 Emacs,但是使用不同的 Lisp 方言或者其他的编程语言。比如:
- MicroEMACS,原作者是 Dave Conroy,后来由 Daniel Lawrence 进一步开发,有很多变种。
- Mg,原名 MicroGNUEmacs,是一个 MicroEMACS 的公共领域分支,比 MicroGNUEmacs 更加接近于 GNU Emacs。现在默认安装在 OpenBSD 上。
- NotGNU,一个小型、快速的 Emacs 实现,是免费软件,支持 DOS、Win16、Win32 和 GNU/Linux,作者为 Julie Melbin。
- JOVE(Jonathan’s Own Version of Emacs),Jonathan Payne 为类 Unix 系统写的 Emacs 不可编程的 Emacs 实现。
- Zile 是 Zile Is Lossy Emacs 的递归缩写,以 C 语言编写。
- Climacs,以 Common Lisp 编写的 Emacs 变种。
- QEmacs,一个由 Fabrice Bellard 编写的小型编辑器,支持 UTF-8,可以快速编辑上百兆大小的文件。
- Epsilon,一个由 Lugaru Software 开发的 Emacs 变种。支持 MS-DOS、MS-Windows、GNU/Linux、FreeBSD、O/S 2 等操作系统。它使用了一个与 C 语言语法类似的非 Lisp 语言作为扩展语言。
- EmACT,1986 年由 Christian Jullien 从 MicroEmacs 派生而来,源代码可以在 SourceForge 获取。
- Hemlock,最初以 Spice Lisp 实现,后来改为 Common Lisp。Hemlock 是 CMU Common Lisp 的一部分,受到了 Zmacs 的影响。
可以模拟 Emacs 的编辑器
- Yi,以 Haskell 语言编写,内置一个 Emacs 模拟器。
- Joe’s Own Editor 内置一个 Emacs 模拟器。
- JED 内置一个 Emacs 模拟器。
功能特点
Emacs 不仅仅是一个编辑器,它是一个集成环境,或可称它为集成开发环境,这些功能如让用户置身于全功能的操作系统中。Emacs 可以:
- 收发电子邮件、上新闻组(Gnus)
- 无缝直接编辑远程文件(Tramp)
- 通过 Telnet 登录远程主机
- 操作壳层(M-x EShell,Term)
- 结合 git, mercurial 等版本控制系统并直接操作(Magit,VC)
- 上 Twitter(Twittering-mode)
- 登陆 IRC 和朋友交流(M-x ERC,rcirc)
- 电子数据表
- 模拟其他编辑器,如 vi(Evil-mode)、WordStar、EDT、TPU 等
- 编辑 Wiki (Wikipedia-mode)
- 对多种编程语言的编辑,如 C/C++、Perl、Python、Lisp 等等
- 调试程序,结合 GDB,EDebug 等。
- 玩游戏
- 计算器
- 心理咨询(M-x doctor)
- 煮咖啡
- 记笔记、日记(Org-mode)
- 管理日程,Task,待办事项(ToDo),约会等 GTD(Org-mode)
- 写作与出版(Org-mode,Muse-mode)
- 目录管理(Dired)
- 文件比较、合并(Ediff)
- 阅读 info 和 man 文档(M-x info,woman)
- 浏览网站(M-x eww)
- 为各种程序(TeX、LaTeX 等)提供统一的操作界面
此外 Emacs 还有如下特点:
- 实时编辑器
- Self-documenting
- 可定制性
- 可扩展性(集成 Lisp 语言)
性能
在 GNU Emacs 刚诞生时,它比相同系统上的其他编辑器运行速度要慢很多,但是现代的电脑可以很快地运行 GNU Emacs。早期的 GNU Emacs 可以处理 256 MB 以下的文件,GNU Emacs 23.2 将这一限制提升到 512 MB,而在 64 位系统的 GNU Emacs 24 中,这个限制是大约 2 EiB。
平台
Emacs 是当前世界上最具可移植性的重要软件之一,能够在当前绝大多数操作系统上运行,包括各种类 Unix 系统(GNU/Linux、FreeBSD、NetBSD、OpenBSD、Solaris、AIX、OS X 等)、MS-DOS、Microsoft Windows 等。甚至在 Android 和诺基亚的 Maemo 上,Emacs 也能运行。
GNU Emacs 既可以在文本终端也可以在图形用户界面环境下运行。在类 Unix 系统上,GNU Emacs 使用 X-Window 产生 GUI,或者直接使用“框架”(widget toolkit),例如 Motif、LessTif 或 GTK+ 等等。Emacs 也能够利用 OS X 和 Microsoft Windows 的本地图形系统产生 GUI。用 GUI 环境下的 Emacs 能提供菜单栏(Menubar)、工具栏(toolbar)、滚动条以及环境菜单(context menu)等交互方式。