Emacs(GNU Emacs) 简介
GNU Emacs 是目前 Unix/Linux 世界里最常见的文本编辑器,与VI(Unix/Linux 操作系统的标准编辑器)。
理解文件与编辑缓冲区
编辑器并不是对某个文件本身进行编辑。事实上,他们会先把文件的内容放到一个临时性的缓冲区中,然后再对缓冲区中的东西进行编辑。在通知编辑器保存缓冲区中的内容之前,存放在磁盘上的原始文件是不会发生任何改变的。虽然缓冲区看起来和文件很相似,但它只是一个临时的工作区域,里面保存的可能只是原始文件的一份副本。Emacs 在打开一个文件的时候,是将这个文件复制一份到缓冲区,然后对缓冲区中的内容进行编辑操作,当关闭 Emacs 时,若选择不保存文件,这样就不会影响原始文件。Emacs 一般情况下,打开文件的缓冲区的名称与原始文件一样,且一一对应;但是,有些缓冲区没有与他们关联的文件, 比如 scratch 就只是一个临时的辅助性缓冲区,它的作用有点像草稿薄,而帮助功能会把帮助信息显示在一个名为 help 的缓冲区里,它也是与任何文件都没有关联的缓冲区。
编辑模式
一个编辑缓冲区每次只能处于一种主模式,退出一种主模式的办法是进入另一个主模式。
Emacs编辑器的主模式(major mode)
模式 | 英文名称 | 功能 |
---|---|---|
基本模式 | fundamental mode | 默认模式,无特殊行为 |
文本模式 | text mode | 书写文字材料 |
邮件模式 | mail mode | 书写电子邮件消息 |
RMAIL 模式 | RMAIL mode | 阅读和组织电子邮件 |
只读模式 | view mode | 查看文件,但不进行编辑 |
shell 模式 | shell mode | 在 Emacs 里运行一个 UNIX shell |
FTP 模式 | ange-ftp mode | 下载或者查看远程系统上的文件 |
Telnet 模式 | telnet mode | 登录到远程系统 |
大纲系统 | outline mode | 书写大纲 |
缩进文本模式 | indented text mode | 自动缩进文本 |
图形模式 | picture mode | 绘制简单的线条图形 |
nroff 模式 | nroff mode | 按 nroff 的要求对文件进行排版 |
TEX 模式 | TEX mode | 按 TEX 的要求对文件进行排版 |
LATEX 模式 | LATEX mode | 按 LATEX 的要求对文件进行排版 |
C 模式 | C mode | 书写 C 语言程序 |
C++ 模式 | C++ mode | 书写 C++ 程序 |
FORTRAN 模式 | FORTRAN mode | 书写 FORTRAN 程序 |
Emacs LISP 模式 | Emacs LISP mode | 书写 Emacs LISP 程序 |
LISP 模式 | LISP mode | 书写 LISP 程序 |
LISP 互动模式 | LISP interaction mode | 书写和求值 LISP 表达式 |
Emacs编辑器的副模式(minor mode)
模式 | 英文名称 | 功能 |
---|---|---|
自动换行模式 | auto-fill mode | 开启字换行(word wrap)功能 |
改写模式 | overwrite mode | 打字时替换而不是插入字符 |
自动保存模式 | auto-save mode | 把文件按一定周期自动保存到一个特殊的临时文件里 |
行号模式 | line number mode | 在状态行上显示当前文本行的编号 |
临时标记模式 | transient mark mode | 对被选取的文本区做高亮反显 |
缩略语词模式 | abbrev mode | 允许使用单词的简写形式 |
大纲模式 | outline mode | 书写大纲 |
VC 模式 | VC mode | 在 Emacs 下使用各种版本控制系统 |
Emacs 的编辑面板
在屏幕的底部,Emacs 会给出一大堆关于当前工作情况的信息。这一行叫做状态行 。状态行靠左边的位置可能有两个星号(**)。这两个尾号的作用是表明正在编辑的文件在上次存盘之后又被修改过。如果没有修改,那么不会出现两个星号。接下来,Emacs 显示“Emacs:”和正在编辑的缓冲区的名字(filename)。接下来的圆括号里给出当前所处的编辑模式。在它的后面,Emacs 给出光标在文件的位置。屏幕的最底部,状态行的下面是辅助输入区(minibuffer),一般用于输入名令或者显示命令的执行结果。
退出 Emacs
如果想结束一次 Emacs 会话,可以按下“C-x C-c”组合键来退出 Emacs;如果对文件进行了编辑却没有保存,Emacs 会询问你是否想要保存那些修改。C-x 表示按下 Control 键,按住不放,同时按下 x 键;ESC n 表示按下 ESC 键,然后放开,再按下 n 键。而 C 表示 Control 键,M 在美式键盘中表示 Alt 键,有些键盘没有 Alt 键则会绑定到 Esc 键。若有什么困惑,可以进入 Emacs 的帮助功能,进入帮助 功能的按键是 C-h,按下 C-h t 时将启动 Emacs 教程。
与文件操作有关的命令
键盘操作 | 命令名称 | 动作 |
---|---|---|
C-x C-f | find file | 查找文件并在一个新缓冲区中打开它 |
C-X C-v | find alternate file | 读入另一个文件替换掉用 C-x C-f 读入的文件 |
C-x i | insert file | 把文件插入到光标的当前位置 |
C-x C-s | save buffer | 保存文件 |
C-x C-w | write file | 把缓冲区内容写入一个文件 |
C-x C-c | save buffers kill Emacs | 退出Emacs |
C-h | help command | 进入 Emacs 的在线帮助系统 |
C-h f | describe function | 给出某个给定命令的在线帮助信息 |
C-h k | describe key | 给出某个给定击键序列的在线帮助信息 |
C-h t | help with tutorial | 启动 Emacs 教程 |
C-h i | info goto Emacs command node | 启动 Info 文档阅读器 |