1. Emacs以及GNU Emacs简介
Emacs即Editor MACroS(宏编辑器),是一种文本编辑器,在程序员和其他以技术工作为主的计算机用户中广受欢迎。最初由Richard Stallman於1975年在MIT协同蓋伊·史提爾二世共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由蓋伊·史提爾二世、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种分别是:1984年由Richard Stallman发起并由他维护至2008年的GNU Emacs,以及1991年发起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。它们都使用了Emacs Lisp这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。
1984年,斯托曼开始致力于开发GNU Emacs,这将是一个自由软件,以代替Gosling Emacs。最初GNU Emacs是在Gosling Emacs的基础上开发的,不过斯托曼后来用一个真正的Lisp解释器代替了原来的Mocklisp解释器,由于Lisp解释器在此软件中的核心地位,这意味着实际上重写了几乎全部代码。GNU Emacs是GNU计划的第一个项目,以C语言编写,将Emacs Lisp(其解释器由C实现)作为扩展语言。GNU Emacs最早广泛发布的版本是15.34,出现于1985年。实际上版本2到12并不存在,GNU Emacs的早期版本都是以“1.x.x”的形式编号,直到1.12版时开发人员放弃了这一记法,因为他们认为主版本号是不应该改动的。因此,Version 13是第一个public release,它发布于1985年3月20日。
2. 文件与缓冲区
缓冲区看起来和文件非常相像,但它只是一个临时性的工作区,里面包含的是文件的一份副本。缓冲区和文件一样有自己的名字,通常就是正在编辑的文件的名字,当然也有例外的情况:
*scratch*:用于写入一些不打算保存的东西。
*Message*:用于输出GnuEmacs的错误日志
*GNU Emacs*:Emacs默认的开始界面
3. 编辑模式
Emacs有各种各样功能略有差异的编辑模式,这些模式可以划分为主模式(major mode)和副模式(minor mode):
使用命令改变Emacs mode:"M-x mode-name"

Emacs的主模式:

154404555.png

另外还有一些常用的模式如:编辑shell script的("M-x sh-mode")、编辑makefile的("M-x makefile-mode")。

Emacs的副模式:

154608848.png

4. Emacs命令
每一个命令都有一个正式的名字,它们对应的实际上是Emacs内部LISP例程的名字。

Emacs把不同的命令绑定一个以CTRL或ESC(有的键盘上是META或者ALT)打头的组合键上,通用的组合键分类如下所示:

  • 最常用的命令(比如光标移动命令)都被绑定位为“C-n”(n可以使任意字符)的形式,“C-n”的输入方法是:按住CTRL键,再按下“n”键,然后释放这两个键。

  • 次常用的命令被绑定位“ESC n”的形式,“n”可以是任意字符。“ESC n”的输入方法是,按下ESC键,释放它,再按下“n”键。(大多数文章说的都是META键,它的简化形式是大写的”M“,META和ESC的功能是完全等价的,其差异在于——如果需要发出一连串的命令,就必须在每一个命令前都加上ESC;而在有META键的情况下,可以按住META键输入一连串的命令)

  • 默写特殊命令被绑定为“C-c something”的形式。这类命令通常与编辑模式有关,例如用cscope编辑代码时使用的快捷键。

  • 除了上面几种可能性以外的情形。这类命令的输入方式是“ESC xlong-command-nameRETURN”。这种方法实际上适用于所有的命令,但组合键通常比较容易学习

5. 基于文本的菜单
Emacs在19.30版里增加了基于文本操作界面的菜单,按下F10或“ESC `”可以打开主菜单。(图形界面下按F10会激活Emacs界面的菜单条,“ESC `”可以打开文本菜单,“`”通常位于键盘左上角,数字键1的旁边)。
使用文本菜单的原因有二:

  • 使用菜单,减少记忆组合键

  • 减少CTRL键的使用

154906451.png

6. 与文件操作有关的命令

154928864.png