# 前言

本系列内容基于 Emacs China 提供的教程[1]

Emcas 的深入学习可以阅读 GNU 提供的教程[2]

# 预备说明

重要快捷键缩写
快捷键 功能
C Ctrl
S Shift
M Alt
RET Enter

C-x d RET 代表先同时按下 Ctrlx,再按下 d,最后再按下 RET

Emacs 里的大部分地方都支持自动补全,快捷键是 TAB

# 快捷键

# 光标移动

光标移动快捷键 1
快捷键 功能
C-f 前移一个字符,f 代表 forward;
C-b 后移一个字符,b 代表 backward;
M-f 前移一个 word;
M-b 后移一个 word;
光标移动快捷键 2
快捷键 功能
C-p 上移至前一行,p 代表 previous;
C-n 上移至下一行,n 代表 next;
光标移动快捷键 3
快捷键 功能
C-a 移至行首,a 代表 ahead;
C-e 移至行尾,e 代表 end;
M-a 前移一个 sentence;
M-e 后移一个 sentence;

# 屏幕移动

屏幕移动快捷键 4
快捷键 功能
C-v 屏幕向下滚动一页,类似于键盘中的 PgUp
M-v 屏幕向上滚动一页,类似于键盘中的 PgDown
C-l 屏幕光标内容居中
M-< 光标移动到文件最开始的位置,注意 < 需要按住 Shift 键,所以实际上是按住三个键;
M-> 光标移动到文件最末尾的位置,同上,需要按住 Shift 键;

# 接收数字作为参数

上述很多命令均只能移动一个字符、一个 word 或者一个 sentence。在按下按键之前,先按下 C-u,再输入一个数字之后,再按下上述命令,则可以移动更多数量的单位。

例如:C-u 8 C-f 向前移动 8 个字符。

# 其他

打断组合键为 C-g ,它用于终端取消之前的指令。

编辑器内显示行号可使用 M-x linum-mode 来开启。

# 文本编辑操作

插入和通常编辑器的文本输入一样。RET 表示回车键 Enter,用于换行。

使用 DEL 删除,它表示 Backspace 键。这一点也和通常的文本编辑器相同。

以上这两点是我想要改用 Emacs 的原因,之前尝试深入学习过 Vim ,但是切换模式这种操作方式,让我这种用习惯了普通编辑器的人很不适应。快捷键倒是可以多用多记,但是操作习惯要改变还是很难的,何况平常打字都是这种习惯。因此, Emacs 这种类似于普通编辑器的快捷键方式更符合我自身的习惯。

除此之外,还有更高级的一些插入和删除方式。

# 插入

上文中有提到 C-u 8 C-f 这种形式的命令,普通文本的插入也可以使用这种方式。向编写 C++ 代码,添加注释的时候,可能会插入很多个 * 号,使用 C-u 8 * 就可以插入 8 个 * 号。

# 删除

删除快捷键 1
快捷键 功能
DEL 删除(Delete)光标前的一个字符;
C-d 删除光标后的一个字符;
删除快捷键 2
快捷键 功能
M-DEL 剪切(Kill)光标当前所在 word 的起始位置到光标位置的字符;
M-d 剪切光标到光标当前所在 word 的终止位置的字符;
删除快捷键 3
快捷键 功能
C-k 剪切光标到当前行末尾的所有字符;(不包含换行符)
M-k 剪切光标到当前句子末尾的所有字符;(他们的差别类似于 C-eM-e

对一个非空行使用 C-k 并不会剪切该行的换行符,此时如果再按下一次,则换行符也被剪切掉,而 Windows 中通常的 Ctrl-x 则直接包含换行符。

如果在 C-k 前接上 C-u 2 这样的内容,则表示剪切多行,并且包含换行符。这个连续按多次 C-k 是不一样的。

另一点不同则是,在同一行连续使用 C-k,多次剪切的内容会存储在一起,在粘贴的时候所有内容会一并粘贴。

Emacs 文档中使用 Delete 表示删除,Kill 表示剪切的含义。

# 选中

在想要选中的起始位置按下 C-SPC,即 CtrlSpace 键,此时底部信息栏会显示 Mark set ,表示进入选中模式;移动光标直到其包含所有想要选中的内容,按下 C-w 会将选中的文本剪切。使用 M-w 则是进行复制。

# 粘贴

Emacs 中使用 yank 表示粘贴,使用 C-y 进行粘贴操作。

如果想要粘贴的内容不是最近剪切的,那么使用 M-y 可以对粘贴的内容进行替换,连续按下便会一直替换,直到又重新循环到最近剪切的内容。

M-y 还可以添加正整数或者负整数作为参数,选择粘贴的内容。

# 搜索

Emacs 搜索是增量式(incremental)的,当输入内容时即开始搜索。使用 C-s 向前跳转,使用 C-r 向后跳转。按下回车将会终止搜索,C-g 同样能够终止搜索。

# 撤销

C-/ 用于撤销。连续使用多次则可以逐次撤回过往的编辑内容。C-_C-/ 等价。但是这个按键位置有点奇怪...

C-x u 也是撤销功能,但是需要按两次按键,不那么方便。

# 文件操作

Emacs 界面底部的信息栏左下角,显示当前编辑的文件名称。

文件操作快捷键 1
快捷键 功能
C-x C-f 打开目标文件, f 代表 find/file;
C-x C-s 保存当前缓冲区(Buffer), s 代表 save。

C-xEmacs 的快捷键中常用的前缀命令。其它常见的还有 C-c, C-h

Emacs 存储文件时,会临时在原文件名称的末尾添加 ~ 后缀(这点和 Office 有些类似),以防止原文件丢失。

# 缓冲区

如果我们在已有打开文件的同时,打开一个新的文件,之前的文件仍旧保留在 Emacs 的缓冲区之中。此时可以通过 C-x C-f 指令切换到该文件(就是打开目标文件的指令)。

使用 C-x C-b 可以查看当前的缓冲区列表。再使用 [C-x 1] 可以退出缓冲区列表界面。

当有多个缓冲区希望保存时,可以使用 {C-x s}{.kbd .red},此时 Emacs 会对每个发生了修改的缓冲区进行询问,我们可以选择是否保存该缓冲区。

# 关闭 Emacs

使用 C-x C-c 关闭 Emacs ,在关闭前,会询问是否真的要关闭软件。

# 扩展指令集

Emacs 可以使用 C-x 或者 M-x 使用扩展指令,C-x 接续一个按键指令,而 M-x 则接续一个较长的命令名称,通常用于使用频率较少的指令。

对于 M-x 执行的指令,可以通过 Tab 进行补全。

# 窗口

在分屏操作之前,先学习一个新的命令 C-x 1,它将当前光标所在窗口最大化,并关闭其他所有窗口。

C-x 2 在窗口底部创建一个新的子窗口。通过 C-x o 可以在不同窗口之间进行切换,o 在这里表示 other。可以通过 C-M-S-v 使得另一个窗口的内容向下滚动,而不需要切换窗口。

C-x 3 则是在当前窗口右侧创建一个新的子窗口。

C-x 5 2 可以创建一个新的窗口,C-x 5 0 可以关闭当前光标所在窗口。当我们较慢速度输入指令的时候,可以看到其他可用的指令,这是只需要按下对应的按键即可。

# 获取帮助

Emacs 是一个富文档编辑器(Self document, extensible editor),而下面的三种方法在学习 Emacs 的过程中也非常重要。他们分别是:

帮助相关快捷键
快捷键 功能
C-h c 显示快捷键的功能;
C-h k 寻找快捷键对应函数的文档;
C-h v 寻找变量的帮助信息;
C-h f 寻找函数的帮助信息;

  1. Emacs 教程 ↩︎

  2. An Introduction to Programming in Emacs Lisp ↩︎

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Linn 微信支付

微信支付

Linn 支付宝

支付宝