Emacs 是什么? 根据 GNU.org 的描述,Emacs 是可扩展的、可定制的、自我编制文档实时显示的编辑器。它提供真正的 LISP ― 平滑地集成进编辑器 ― 用于编写扩展并提供 X Window 系统的一个界面。 曾有人说(恐怕不是完全在开玩笑)Emacs 能很好地完成太多的不同工作,以至于它快成为不错的操作系统 ― 就缺一个象样的文本编辑器。 但认真地说:Emacs 是一个健壮的可扩展的文本编辑环境。它在设计时被加入很多很多东西,包括编译和调试界面、电子邮件、游戏和 Eliza。特别对于那些以写作或/和写代码为生的人来说,可以很容易地在早上启动几个 Emacs 会话,开始工作,一整天不运行其它应用程序。 起源和其它选择 最初的 Emacs 是由 Richard Stallman 在 20 世纪 70 年代为在 Massachusetts Institute for Technology 的 Incompatible Timesharing System(ITS)而写的。最早在 1984 年发布的 GNU Emacs 也是才华横溢的 Richard Stallman 的杰作。GNU Emacs 可从 GNU.org 得到,授权方式是自由软件基金会(Free Software Foundation)的 GNU GPL。 http://www.gnu.org/software/emacs/ 如果你总是在终端下工作的话,你可能会选择 emacs-nox 。这是一个没有 GTK+ 依赖的版本(也没有声音支持)。 终端版 Emacs 存在以下问题:它支持更少的颜色和更少的字体控制功能(缺少在线控制字体大小、在一篇文档中使用多种字体等功能)。而且对于一些需要高级特性的功能比如 Speedbar 或者 GUD(调试环境),它也不支持。另外在控制复杂的外观(face)时,emacs-nox 比 Emacs 要慢。 如果你想体验 Emacs 的所有扩展功能而不用装一堆依赖的话,你可以使用 PKGBUILD 来按你的需求定制 Emacs。不使用 gtk3 可以让 Emacs 避免使用 gconf 。图像和声音的支持也可以去除。在 Emacs 的源代码目录下运行 ./configure --help 可以看看有哪些配置选项。 PKGBUILD # ... ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \ --localstatedir=/var --with-x-toolkit=gtk2 --with-xft \ --without-gconf --without-sound # ... Emacs 有众多变体发行版本(有时候称作 emacsen ). 最常见的莫过于 XEmacs,它是 Emacs 代码库的一个分支的结果。这个分支发生在很久以前,虽然用户界面的主要部分相同或很相似,但是下层的扩展和 LISP 代码是不兼容的。然而,两者之间的移植是可能的。 许多 Linux 分发版有这两种版本的 Emacs,根据出版者的选择,其中一个版本的安装优先于另一个。例如在 Debian 中,如果您选择安装 Emacs,Debian 将安装 GNU Emacs,Red Hat 7.2 也是这样。上一次我安装 Caldera OpenLinux 时,它默认为 XEmacs。 快速入门 一般印象是 Emacs 十分复杂,学习曲线陡峭,但很多资深学习者并不这样认为,反而认为其非常易懂和可定制。因为其源码和配置文件语义化程度较高。简单了解下自定义和高扩展带来的好处花不了多少时间。何况还有很多成熟的功能拓展模块,很方便添加,可以让Emacs为任何文本编辑的需求配置强大的环境。 Emacs 自带一个入门教程,你可以点击欢迎界面上的第一个链接来打开它; 或者从菜单栏中选择 Help->Emacs Tutorial,或者按 'F1' 键然后按 't' . 我们设计这篇文章来为你在 Emacs 入门学习中提供额外的资源。 Emacs 也包括一系列引用链接,既有适合初学者的内容,也有骨灰级玩家所喜爱的.参见 /usr/share/emacs/<version>/etc/refcards/ (将<version>换成你的emacs版本). Emacs 击键约定 Emacs 自身的文档有独特的方式来描述用于定义操作的击键,如下: C-<chr> == Ctrl + 字符,同时按。 M-<chr> == Meta + 字符,同时按。 但是,什么是 Meta?Meta 可以是一个专用键(有时这样标记),它可能是 Alt 键,它也可能在您系统所用的键映射表(keymap)中根本不存在。那没关系;Meta 有替代键,就是先按 Esc 键,再按后面的字符键(而不是一起按)。这样产生的结果和 M-<chr> 相同。 命令和键绑定 Emacs 实现了一个版本 LISP,一种线程语言,用于构建它的命令和扩展。所有的命令都有名字,例如 Buffer-menu-bury、backward-char 和 forward-paragraph。尽管它们被有逻辑地排列和命名,但是在我当前的安装中它们的数量超过 1800 个,那需要输入很多。 这就是为什么许多命令要和以 Ctrl 和 Meta 键开头的键组合绑定的原因。调用一个有名字的命令的方法是先输入 M-x,再输入命令名。得到键绑定列表的长格式命令是 M-x describe-bindings。幸运的是它有一个键绑定:C-h b。 切换到列表窗口按 C-x o,递增的搜索按 C-s,切换回您的工作窗口按 C-x o,关闭除当前缓冲区以外的所有窗口按 C-x 1。试一试这些命令,看一看其中的一些 ― 大约共有 600 个键绑定。不要担心我们在这次短途旅行中用到的命令,我们到时候将在本教程后半部重访所有这些命令。 运行 Emacs 和退出 现在启动您的 Emacs(或 XEmacs)副本。在终端或控制台中输入 emacs 不打开图形界面,直接在终端中运行: emacs -nw 默认的emacs会带有颜色主题,如果不需要,可以关闭之: emacs -nw --color=no 也可以直接用下面的命令来打开一个文件: emacs filename.txt 怎么关闭它(尤其是你要在终端里运行它的话):用 Ctrl+x Ctrl+c 来关闭它。 它的意思是按 Ctrl + x,再按 Ctrl + c。如果您更改了任何打开的文件,那么 Emacs 将提示您,例如: Save file /home/nong/filename.txt? (y, n, !, ., q, C-r or C-h) 如果我做了文件的修改,就要回答 y。如果按 !,就直接退出了,什么也没保存。 Emacs 启动后,打开现有的文件的方法是按 C-x C-f 来查找文件并把它装入缓冲区。 另一方面,我常常想保存我已完成的工作再继续输入。保存我的工作再继续的击键组合是 C-x C-s。 作为守护进程 Emacs由于每次启动都需要加载大量自定义的配置文件,所以打开时候会有点慢。从Emacs23开始, Emacs可以以守护进程的形式运行,这样每个用户都可以链接到Emacs。 以守护进程运行Emacs: emacs --daemon |