启动 Emacs
启动 Emacs 非常简单,只需在终端输入 emacs 命令。

基本启动
emacs
这会启动一个图形界面的 Emacs 窗口,如果没有图形环境(例如在 SSH 连接的服务器上),它会启动一个终端(文本)模式的 Emacs。
启动并打开文件
emacs filename.txt emacs /path/to/your/document.org
如果文件不存在,Emacs 会创建一个新文件。
启动并打开多个文件
emacs file1.txt file2.txt file3.txt
Emacs 会为每个文件创建一个缓冲区(Buffer)。
启动并跳转到指定行
这对于快速定位错误非常有用。

emacs +100 filename.log
这会打开 filename.log 文件,并将光标定位在第 100 行。
启动并执行 Elisp 代码
emacs --eval "(message \"Hello from Emacs!\")"
这在脚本化或自动化 Emacs 任务时很有用。
基础编辑命令(核心操作)
Emacs 的核心是 Ctrl 和 Meta 键的组合。
Ctrl键:通常简写为C。Meta键:通常指Alt键,简写为M。
光标移动
| 命令 | 作用 | 缩写 |
|---|---|---|
C-f |
向前移动一个字符 | forward |
C-b |
向后移动一个字符 | backward |
C-p |
向上移动一行 | previous |
C-n |
向下移动一行 | next |
M-f |
向前移动一个单词 | forward-word |
M-b |
向后移动一个单词 | backward-word |
C-a |
移动到行首 | beginning-of-line |
C-e |
移动到行尾 | end-of-line |
M-< |
移动到文件开头 | |
M-> |
移动到文件结尾 |
文本编辑
| 命令 | 作用 | 缩写 |
|---|---|---|
C-d |
删除光标后一个字符 | delete |
M-d |
删除光标后一个单词 | delete-word |
DEL (或 Backspace) |
删除光标前一个字符 | |
M-DEL (或 C-Backspace) |
删除光标前一个单词 | |
C-k |
从光标位置删除到行尾 | kill-line |
C-y |
粘贴(Yank)上次删除的内容 | yank |
M-y |
在 C-y 之后按,可以循环粘贴更早的内容 |
撤销与重做
| 命令 | 作用 |
|---|---|
C-x u |
撤销,可以连续按多次进行多次撤销 |
C-g |
取消当前命令或输入 |
文件与缓冲区操作
这是 Emacs 日常使用中最频繁的操作。

文件操作
| 命令 | 作用 | 缩写 |
|---|---|---|
C-x C-f |
查找并打开文件 (Find File) | |
C-x C-s |
保存当前文件 (Save File) | |
C-x C-w |
将当前缓冲区另存为新文件 (Write File) | |
C-x C-v |
替换当前文件(关闭旧文件,打开新文件) | |
C-x i |
在光标位置插入另一个文件的内容 | insert-file |
缓冲区 操作
缓冲区是 Emacs 在内存中打开的文件副本,你可以同时打开多个文件,每个文件对应一个缓冲区。
| 命令 | 作用 | 缩写 |
| :--- | :--- | :--- |
| C-x C-b | 列出所有缓冲区 | list-buffers |
| C-x b | 切换到指定缓冲区 (Switch Buffer) | switch-to-buffer |
| C-x k | 关闭(杀死)当前缓冲区 (Kill Buffer) | |
| C-x s | 保存多个修改过的缓冲区 | save-some-buffers |
搜索与替换
Emacs 提供了强大的搜索功能。
基本搜索
| 命令 | 作用 |
|---|---|
C-s |
向前增量搜索 (Incremental Search) |
C-r |
向后增量搜索 (Reverse Incremental Search) |
增量搜索的使用方法:
- 按
C-s,状态栏会出现I-search:。 - 输入你想搜索的字符串,光标会实时跳到第一个匹配项。
- 继续按
C-s,跳到下一个匹配项。 - 按
C-r,在当前匹配结果中反向查找。 - 按
DEL或Backspace删除搜索字符,可以向前查找上一个匹配项。 - 按
Enter或C-g退出搜索模式。
查询替换
| 命令 | 作用 |
|---|---|
M-% |
查询替换 (Query Replace) |
查询替换的使用方法:
- 按
M-%。 - Emacs 会提示你输入要替换的字符串(
Query replace:)。 - 输入后按
Enter。 - 接着提示你输入替换成的字符串(
Query replace [old] with [new]:)。 - 输入后按
Enter。 - 之后 Emacs 会逐个询问如何处理每个匹配项:
y: 替换当前匹配项并继续。n: 跳过当前匹配项并继续。- 替换剩余所有匹配项,不再询问。
- (点): 替换当前匹配项并立即退出。
C-r: 进入递归编辑模式,可以临时进行其他编辑操作。
窗口与帧管理
Emacs 可以将屏幕分割成多个小窗口,方便同时查看多个文件。
| 命令 | 作用 |
|---|---|
C-x 2 |
垂直分割窗口 (Split Window Vertically) |
C-x 3 |
水平分割窗口 (Split Window Horizontally) |
C-x o |
在窗口间切换光标 (Other Window) |
C-x 0 |
关闭当前窗口 (Delete Window) |
C-x 1 |
只保留当前窗口,关闭其他所有窗口 (Delete Other Windows) |
C-x ^ |
增大当前窗口高度 |
C-x { |
减小当前窗口宽度 |
C-x } |
增大当前窗口宽度 |
注:窗口是 Emacs 内部的概念,而“帧”(Frame)则对应于操作系统中的一个窗口。
| 命令 | 作用 |
|---|---|
C-x 5 2 |
创建一个新帧 |
C-x 5 o |
在帧之间切换 |
退出 Emacs
| 命令 | 作用 |
|---|---|
C-x C-c |
退出 Emacs,如果缓冲区有未保存的修改,会提示你保存。 |
C-x C-s |
保存文件,但不会退出。 |
实用技巧与高级功能
获取帮助
| 命令 | 作用 |
|---|---|
C-h t |
打开 Emacs 教程 (Emacs Tutorial),新手必看! |
C-h k |
查询一个按键的绑定功能 (Describe Key),按 C-h k 然后再按你想查询的键(如 C-f),Emacs 会告诉你 C-f 的功能。 |
C-h f |
查询一个函数的功能 (Describe Function)。 |
C-h v |
查询一个变量的值和说明 (Describe Variable)。 |
Dired (目录编辑器)
C-x C-d 或 dired 命令可以打开一个目录,让你像在文件管理器里一样浏览、复制、重命名、删除文件和目录,这是 Emacs 的一个杀手级功能。
模式
Emacs 会根据文件类型自动切换“主模式”(Major Mode),.py 文件会进入 Python 模式,提供语法高亮、代码缩进等功能。
M-x+tab(按Tab键可以自动补全模式名称) 可以手动切换模式。- 每个主模式通常有自己的
C-c前缀的快捷键。
状态栏
Emacs 窗口最下方是状态栏,显示了很多有用的信息:
- 当前文件名。
- 主模式名称(如
Emacs-Lisp)。 - 缓冲区是否被修改( 表示已修改)。
- 当前行号和列号。
| 功能类别 | 核心命令 |
|---|---|
| 启动 | emacs, emacs filename, emacs +100 file |
| 光标移动 | C-f/b/p/n, C-a/e, M-f/b |
| 编辑 | C-d, M-d, C-k, C-y |
| 文件操作 | C-x C-f (打开), C-x C-s (保存), C-x C-w (另存) |
| 缓冲区 | C-x b (切换), C-x k (关闭), C-x C-b (列表) |
| 搜索 | C-s (向前), C-r (向后), M-% (替换) |
| 窗口 | C-x 2 (垂直分), C-x 3 (水平分), C-x o (切换) |
| 退出 | C-x C-c |
| 帮助 | C-h t (教程), C-h k (查询按键) |
最重要的建议:
花 30 分钟把 C-h t (Emacs Tutorial) 过一遍,这是学习 Emacs 最高效的方式,Emacs 的学习曲线虽然陡峭,但一旦你掌握了它的操作逻辑,就会发现自己再也离不开它了,祝你好运!
