前言

这篇文章参考了Emacs的Tutorial中文版,翻译质量非常高,需要多读两遍。

Emacs中的一大特点,就是快捷键非常多。因为在Emacs发明出来之前,还没有鼠标的存在。

由于编辑麻烦的原因,对Ctrl、Shift、Alt进行简写,如下:

键盘简写
CtrlC
ShiftS
AltM

在Emacs中常见的 C-n 表示的含义就是按住 Ctrl 和键盘的 n 键。

想要在Emacs中获取帮助,常用的快捷键有:

快捷键含义
C-h b C-n查询 C-n 的意思
C-h k C-n查询 C-n 的详细信息
C-h t打开引导文档
C-h i阅读手册

文件操作

快捷键含义助记
C-x C-f查找文件,不存在则新建文件find
C-x C-w另存为新文件write
C-x C-S保存文件save

光标移动

快捷键含义快捷键含义含义
C-p上一行C-n下一行previous, next
C-f右移C-b左移forward, backward
M-f右移一个词M-b左移一个词中文是移动到空格或者标点处
C-e移动到行尾C-a移动到行首end, ahead
M-e移动到句尾M-a移动到句首
M-<移动到文档开头M->移动到文档末尾< > 需要使用Shift打出

通常来说, C 控制与语言无关的单位(如字符、行), M 控制与语言相关的单位(如单词、句子、段落)

文字编辑

快捷键含义快捷键含义备注
Backspace删除光标前的一个字符C-d Delete删除光标后的一个字符
M-Backspace移除光标前的一个词M-d移除光标后的一个词
C-k删除从光标到行尾间的字符M-k移除光标到句尾间的字符
C-y粘贴最近一次移除的内容M-y粘贴前一次移除的内容

标记删除的步骤:

  1. C-<SPC> ( C-空格 ) 进行标记,中文输入法可能会切换,则使用 C-@C-S-2 来进行标记,状态栏显示Mark Set
  2. 移动光标
  3. C-w 删除标记内容

中间可使用 C-g 取消命令

移除(kill)和删除(delete)的区别: 移除的内容被Emacs记录,内容可以被召回(yank),相当于剪切内容 删除的内容被Emacs抛弃,但还在内存中,可以通过撤销命令来找回内容 对于单个字符和空白的删除,一般不会记录。对于多个字符的内容,一般只会被移除

撤销(Undo)

C-/C-x uC-_ 三个命令的效果是一样的,撤销命令。

缓冲区(Buffer)

快捷键含义备注
C-x C-b列出缓冲区
C-x b buffer切换缓冲区buffer表示缓冲区名称
C-x 1离开缓冲区数字1,切换主窗口
C-x s保存所有缓冲区文件

窗口操作

一般来说, C-x 都是与窗口、文件、缓冲区相关的命令。

快捷键含义快捷键含义助记
C-v视图向后滚动M-v视图向后滚动下一页,上一页
C-x 0隐藏或者显示窗口C-x 1关闭其他窗口
C-x 2上下分屏C-x 3左右分屏
C-x 4 C-f打开新窗口
C-x 5 2打开新界面C-x 5 0关闭所选界面
C-x o循环切换窗口
C-M-v滚动下方窗口

重复参数

每个命令都可以重复执行多次

C-n 表示移动到下一行,通过输入 C-u 10 C-n 来表示重复执行 C-n 10次,步骤为:

  1. C-u
  2. 输入10
  3. C-n

额外的,对于 C-vM-v 来说,是滚动N行,而不是执行翻页N次。 C-u 10 C-v 表示向下滚动10行, C-u 10 M-v 表示向上滚动10行

终止命令

C-g 可以取消正在输入的命令。比如上面的重复次数执行,已经输入了 C-u 10C-g 即可取消

搜索

快捷键含义快捷键含义
C-s向前搜索C-r向后搜索

当第一次输入 C-s 时,会出现"I-search",等待输入,如果希望跳转到下一个搜索位置,继续使用 C-s 进行光标跳转 C-g 让光标回到搜索开始前的位置, Enter 让光标停在搜索结果出

** 命令集扩展 C-x 字符扩展。 C-x 之后输入另一个字符或者组合键 M-x 命令名扩展。 M-x 之后输入一个命令名

自动保存

自动保存文件名: #文件名# ,例如 #Emacs基础.org#

模式切换

在Emacs中有许多模式(Major Mode),默认模式为Foundamental

快捷键含义
M-x org-mode切换到org-mode模式

代码编辑

!!!内联代码块两侧都需要加上空格,否则无效

  1. 内联代码: codecode
  2. 源代码块:
    ; ;仅为了方便展示
    ;#+BEGIN_SRC emacs-lisp
    
    ;#+END_SRC