Emacs学习笔记(2): 初识Emacs
内容提要
1.Emacs是什么
2. Emacs能做什么
3. Emacs的界面
4.基本概念--命令
5. 基本概念--快捷键
6. 基本概念--模式
Emacs学习笔记2: 初识Emacs
1.Emacs是什么
其实很难给Emacs下一个定义。正统的说法也许是"Emacs即Editor MACroS(宏编辑器),是一种文本编辑器"。
最初人们认为Emacs是一个编辑器(Editor),与Vim一起并称为两大神器,据说Vim是编辑器之神而Emacs是神之编辑器,又据说世界上的程序员分三种,一种使用Emacs,一种使用vim,剩余的是其它。
也有人认为Emacs是一个架构在编辑器上的集成环境,除了最基本的编辑功能,还可以完成文件管理、终端模拟、浏览网页、收发邮件、编译程序等工作,以及煮咖啡。
更有人说Emacs是伪装成编辑器的操作系统,甚至说Emacs是一种信仰。
Emacs最初由RichardStallman在1975年开发,之后产生了众多的衍生版本,而目前使用得最多的两个版本是RichardStallman在1984年开发的GNUEmacs和1991年由JamieZawinski写成的XEmacs。Emacs可谓历史悠久,目前的GNU Emacs的版本是23.4。一部Emacs的历史,等于一部计算机史,一部世界黑客史。本文不想将编辑器大战的战火烧到这里,所以还是就此打住,来看看Emacs能做什么。
2. Emacs能做什么
据我所知,Emacs 的能力包括: 1. 编辑文本 2. 编辑程序 3. 作为其它程序的界面 4. 作为操作系统 5. 煮咖啡 |
Emacs是一个具有超强扩展性,超强定制性的操作平台,它能做什么取决于你对它的定制和扩展。Emacs之所以强大,就来源于其近乎无限的可定制性和可扩展性。
3. Emacs的界面
未定制的Emacs如下图所示:
整个窗口在Emacs中叫做frame,图形界面下的Emacs可以打开多个frame。每个frame从上到下分成3部分,分别是缓冲区,状态栏和回显区。
缓冲区是编辑的主区域,但是在这里操作的还不是真正的文件,而是文件的一个缓存(buffer)。只有执行写入操作时,才会将buffer的内容写入到文件。缓冲区可以分成多个区域,缓冲不同的内容。这些区域在Emacs中成为"窗口"。
缓冲区之下是状态栏,显示当前的一些状态信息,比如图中从左至右依次为:
U: 当前的文件编码是UTF-8, 如果是GBK会显示c
**: 文件状态,**表示未保存,--表示可写,%%表示只读
Emacs1: 是当前编辑的文件的名称
All: 表示当前缓冲区已经显示文件的所有内容,否则会显示比如Bot,表示处于文件的末尾处
L23: 当前光标所在的行数
fundamental: 当前的模式
等等,不同发行版的Emacs显示的状态栏内容可能会有所不同。
最下面是回显区,提示当前正在进行的操作。比如"文件已保存"之类的信息。如果一个命令没有输入完,这里还会显示已经输入的指令,提示用户。
4.基本概念--命令
对Emacs所有的操作都是通过调用命令实现的。对于一些常用的命令,会定义快捷键以便快速使用。
不管是否有快捷键,都可以通过M-x command 的方式执行命令。(M-x即Alt+x,是一种快捷键,后面会有介绍)比如输入回车,相当于:
M-x newline
通过M-x执行命令时,可以使用 TAB 补全,使用 M-p 上翻, M-n 下翻。
Emacs中的取消通常是连按三下ESC:
ESC ESC ESC (M-x keyboard-escape-quit)
但是在命令执行过程中,有可能该命令无法使用(比如有些命令是交互式的,需要输入一些参数),所以中止一条命令的执行最好使用C-g (M-x keyboard-quit)。
5. 基本概念--快捷键
本质上,快捷键只是一种发送命令的方法!
Emacs的快捷键通常以组合键的方式定义。如M-x 表示Alt+x。前面的字母M代表修饰符,Emacs定义的修饰符如下:
C-:Control
M-: Alt(应该是Meta,在 PC 上,Meta键 通常对应 Alt 键)
C-M-: 同时按住 Ctrl 和 Alt
S-:Shift
RET:Return
TAB:Tab
ESC:Esc,等价于M-。比如,C-M-r ,等价于ESC C-r
SPC:空格键
DEL:退格键
Delete:删除键
上面提到了ESC C-r。这是一种组合方式,表示先按ESC,再按C-r。Emacs中的很多快捷键定义成组合的方式。如 C-x C-c(M-x save-buffers-kill-emacs)
此外还有些命令可以传递参数,在Emacs的表示法中用 (#) 代表。如:
C-u (#) C-f 代表重复#次C-f
6.基本概念--模式
Emacs是一种“有模式”的编辑器。如果用过Vim就很容易理解。不过Emacs中的模式分成主要模式(major mode)和次要模式(minor mode)两种。
主要模式由文件类型决定,每个buffer打开文件时会根据文件类型决定其主要模式。常见的主要模式有:
fundamental-mode:缺省的 Emacs 模式,拥有最少设置和绑定 text-mode:编辑文本的基本模式 c-mode:用于编辑 C 程序源代码 lisp-interaction-mode:用于编辑和编译 Lisp 代码 ptex-mode:用于编辑 TeX 文档 |
次要模式可以组合到主要模式中,常见的次要模式比如:
abbrev-mode:用于生成和使用缩写 auto-fill-mode:用于自动文字回绕、填充较长的行和段落 line-number-mode:显示当前行号 overwrite-mode:覆盖模式,代替默认的插入模式 |
可以通过命令来指定模式:M-x mode_name
对于一个buffer来说,当前的主要模式只能有一种,当指定主要模式时,原来的主要模式会被替换;而当前的次要模式可以有多种。
如果输入的模式包含在当前模式中,对于主要模式,会清空所有的次要模式;对于次要模式,会关闭这个次要模式。
模式的变化在状态栏中可以看到。