Emacs 是可扩展的、可定制的、自记录的实时显示文本编辑器。此参考适用于 Emacs 27+
要进入 Emacs,只需输入其名称:
$ emacs
:- | :- |
---|---|
C-z |
挂起 Emacs |
C-x C-c |
永久退出 Emacs |
:- | :- |
---|---|
C-<key> |
表示按住控件,然后按 <key> |
M-<key> |
表示按 Esc 一次,然后按 <key> |
注意:本备忘单遵循上述规则
返回 | 向前 | 要移动的实体 |
---|---|---|
C-b |
C-f |
Haracter |
M-b |
M-f |
单词 |
C-p |
C-n |
线 |
C-a |
C-e |
行开头 (或结尾) |
M-a |
M-e |
句子 |
M-{ |
M-} |
段落 |
C-x [ |
C-x ] |
页 |
C-M-b |
C-M-f |
Sexp |
C-M-a |
C-M-e |
功能 |
M-< |
M-> |
缓冲区开始 (或结束) |
:- | :- |
---|---|
M-u |
大写单词 |
M-l |
小写单词 |
M-c |
大写单词 |
C-x C-u |
大写区域 |
C-x C-l |
小写区域 |
:- | :- |
---|---|
C-x C-f |
将文件读入 Emacs |
C-x C-s |
将文件保存回磁盘 |
C-x s |
保存所有文件 |
C-x i |
将另一个文件的内容插入此缓冲区 |
C-x C-v |
将此文件替换为您的文件 |
C-x C-w |
将缓冲区写入指定文件 |
C-x C-q |
切换缓冲区的只读状态 |
:- | :- |
---|---|
C-g |
中止部分键入或执行的命令 |
M-x 恢复会话 |
恢复因系统崩溃而丢失的文件 |
C-x u C-_ C-/ |
撤消不需要的更改 |
M-x 恢复缓冲器 |
将缓冲区恢复到其原始内容 |
C-l |
重绘垃圾屏幕 |
:- | :- |
---|---|
C-t |
转置字符 |
M-t |
转置词 |
C-x C-t |
转置线 |
C-M-t |
转置性别 |
:- | :- |
---|---|
C-v |
滚动到下一个屏幕 |
M-v |
滚动到上一个屏幕 |
C-x < |
向左滚动 |
C-x > |
向右滚动 |
C-l |
将当前行滚动到 center, top, bottom |
:- | :- |
---|---|
M-g g |
转到行 |
M-g c |
转到字符 |
M-m |
返回缩进 |
:- | :- |
---|---|
C-@ C-SPC |
在标记在这里 |
C-x C-x |
交换点和标记 |
M-@ |
设置标记 arg 单词 |
M-h |
标记段落 |
C-x C-p |
标记页面 |
C-M-@ |
标记性 |
C-M-h |
标记功能 |
C-x h |
标记整个缓冲区 |
向后 | 向前 | 要杀死的实体 |
---|---|---|
DEL |
C-d |
字符 (删除) |
M-DEL |
M-d |
单词 |
M-0 C-k |
C-k |
行 (到结尾) |
C-x DEL |
M-k |
句子 |
M-- C-M-k |
C-M-k |
性爱 |
:- | :- |
---|---|
C-W |
杀死区域 C-w |
M-w |
复制区域杀死环 |
M-z char |
杀死下一次出现的字符 |
C-y |
拉回最后一个被杀的东西 |
M-y |
用之前的杀戮替换最后的猛拉 |
:- | :- |
---|---|
C-x 1 |
删除帮助窗口 |
C-M-v |
滚动帮助窗口 |
C-h a |
Apropos:显示匹配字符串的命令 |
C-h k |
描述一个键运行的功能 |
C-h f |
描述一个函数 |
C-h m |
获取特定于模式的信息 |
帮助系统很简单。键入 C-h
(或
F1
)并按照说明进行操作。如果您是第一次使用,请键入 C-h
t
以获得教程
当显示两个命令时,第二个命令是用于框架而不是窗口的类似命令
:- | :- | :- |
---|---|---|
C-x 5 1 |
C-x 1 |
删除所有其他窗口 |
C-x 5 2 |
C-x 2 |
拆分窗口,上方和下方 |
C-x 5 0 |
C-x 0 |
删除此窗口 |
:- | :- | :- |
---|---|---|
C-x 3 |
拆分窗口,并排 | |
C-M-v |
滚动其他窗口 |
:- | :- | :- |
---|---|---|
C-x 5 o |
C-x o |
将光标切换到另一个窗口 |
C-x 5 b |
C-x 4 b |
在其他窗口中选择缓冲区 |
C-x 5 C-o |
C-x 4 C-o |
在其他窗口中显示缓冲区 |
C-x 5 f |
C-x 4 f |
在其他窗口中查找文件 |
C-x 5 r |
C-x 4 r |
在其他窗口中以只读方式查找文件 |
C-x 5 d |
C-x 4 d |
在其他窗口中运行 Dired |
C-x 5 . |
C-x 4 . |
在其他窗口中查找标签 |
:- | :- | :- |
---|---|---|
C-x ^ |
让窗户变高 | |
C-x { |
缩小窗口 | |
C-x } |
让窗口变宽 |
:- | :- |
---|---|
TAB |
缩进当前行(取决于模式) |
C-M-\ |
缩进区域(取决于模式) |
C-M-q |
缩进 sexp(取决于模式) |
C-x TAB |
缩进区域刚性 arg 列 |
M-; |
缩进评论 |
C-o |
在点后插入换行符 |
C-M-o |
将其余行垂直向下移动 |
C-x C-o |
删除点周围的空行 |
M-^ |
与上一个加入行(带 arg,下一个) |
M-\ |
删除点周围的所有空白 |
M-SPC |
在点上正好放一个空格 |
M-q |
填写段落 |
C-x f |
将填充列设置为 arg |
C-x . |
设置每行开头的前缀 |
M-o |
设置面 |
:- | :- |
---|---|
C-h i |
输入信息文档阅读器 |
C-h S |
在 Info 中查找指定的函数或变量 |
:- | :- |
---|---|
SPC |
向前滚动 |
DEL |
反向滚动 |
b |
节点的开始 |
:- | :- |
---|---|
n |
下一个节点 |
p |
上一个节点 |
u |
提升 |
m |
按名称选择菜单项 |
n |
按编号 (1–9) 选择第 n 个菜单项 |
f |
遵循交叉引用(用 l 返回) |
l |
返回您看到的最后一个节点 |
d |
返回目录节点 |
t |
转到信息文件的顶部节点 |
g |
按名称转到任何节点 |
:- | :- |
---|---|
h |
运行信息教程 |
i |
在索引中查找主题 |
s |
搜索节点以查找正则表达式 |
q |
退出信息 |
以下键在 minibuffer
中定义
:- | :- |
---|---|
TAB |
尽可能完成 |
SPC |
最多完成一个单词 |
RET |
完成并执行 |
? |
显示可能的完成 |
M-p |
获取先前的 minibuffer 输入 |
M-n |
获取稍后的 minibuffer 输入或默认值 |
M-r |
正则表达式向后搜索历史 |
M-s |
正则表达式向前搜索历史 |
C-g |
中止命令 |
键入 C-x
ESC
ESC
以编辑并重复使用
minibuffer
的最后一个命令。键入 F10
以激活文本终端上的菜单栏项
:- | :- |
---|---|
M-. |
查找标签(定义) |
C-u M-. |
查找标签的下一个出现 |
M-x 访问标签表 |
指定一个新的标签文件 |
M-x 标签搜索 |
正则表达式搜索标签表中的所有文件 |
M-x 标签查询替换 |
对所有文件运行查询替换 |
M-, |
继续最后一个标签搜索或查询替换 |
:- | :- |
---|---|
C-x b |
选择另一个缓冲区 |
C-x C-b |
列出所有缓冲区 |
C-x k |
杀死一个缓冲区 |
:- | :- |
---|---|
C-x r r |
复制矩形进行注册 |
C-x r k |
杀死矩形 |
C-x r y |
拉长矩形 |
C-x r o |
打开矩形,向右移动文本 |
C-x r c |
空白矩形 |
C-x r t |
用字符串为每一行添加前缀 |
:- | :- |
---|---|
C-x ( |
开始定义键盘宏 |
C-x ) |
结束键盘宏定义 |
C-x e |
执行最后定义的键盘宏 |
C-u C-x ( |
附加到最后一个键盘宏 |
M-x name-last-kbd-macro |
命名最后一个键盘宏 |
M-x insert-kbd-macro |
在缓冲区中插入 Lisp 定义 |
:- | :- |
---|---|
. (dot) |
除换行符外的任何单个字符 |
* |
零次或多次重复 |
+ |
一次或多次重复 |
? |
零次或一次重复 |
\ |
引用特殊字符 |
\c |
引用正则表达式特殊字符 c |
| |
替代(“或”) |
\(...\) |
分组 |
\(:?...\) |
害羞的分组 |
\(:NUM...\) |
显式编号分组 |
\n |
与第 n 组相同的文本 |
\b |
在断字时 |
\B |
不在断字 |
开始 | 结束 | 实体 |
---|---|---|
^ |
$ |
行 |
\< |
\> |
单词 |
\_< |
\_> |
象征 |
\‘ |
\’ |
缓冲 |
这些 | 其他 | class |
---|---|---|
[...] |
[^...] |
显式集 |
\w |
\W |
单词语法字符 |
\sc |
\Sc |
具有语法 c 的字符 |
\cc |
\Cc |
类别 c 的字符 |
:- | :- |
---|---|
C-s |
向前搜索 |
C-r |
向后搜索 |
C-M-s |
正则表达式搜索 |
C-M-r |
反向正则表达式搜索 |
M-p |
选择上一个搜索字符串 |
M-n |
选择下一个稍后搜索字符串 |
RET |
退出增量搜索 |
DEL |
最后一个字符的撤消效果 |
C-g |
中止当前搜索 |
再次使用 C-s
或 C-r
在任一方向重复搜索。 如果 Emacs 仍在搜索,C-g
只取消不匹配的部分
:- | :- |
---|---|
M-% |
以交互方式替换文本字符串 |
M-x regexp |
使用正则表达式 |
SPC / y |
替换这个,继续下一个 |
, |
换这个,别动 |
DEL / n |
不更换就跳到下一个 |
! |
替换所有剩余的匹配项 |
^ |
回到上一场比赛 |
RET |
退出查询替换 |
C-r |
进入递归编辑(C-M-c 退出) |
:- | :- |
---|---|
M-! |
执行一个shell命令 |
M-& |
异步执行shell命令 |
M- |
在区域上运行 shell 命令 |
C-u M- |
通过 shell 命令过滤区域 |
M-x shell |
在window shell中启动一个shell |
:- | :- |
---|---|
C-x RET l |
指定主要语言 |
M-x list-input-methods |
显示所有输入法 |
C-\ |
启用或禁用输入法 |
C-x RET c |
为下一个命令设置编码系统 |
M-x list-coding-systems |
显示所有编码系统 |
M-x prefer-coding-system |
选择首选的编码系统 |
:- | :- |
---|---|
C-x r s |
在寄存器中保存区域 |
C-x r i |
将寄存器内容插入缓冲区 |
C-x r SPC |
将点的值保存在寄存器中 |
C-x r j |
跳转到保存在寄存器中的点 |
:- | :- |
---|---|
C-u num |
数值参数 |
M-- |
否定论点 |
C-q char |
带引号的插页 |
:- | :- |
---|---|
C-x C-e |
评估点前的性 |
C-M-x |
评估电流定义 |
M-x eval-region |
评估区 |
M-: |
读取和评估 minibuffer |
M-x load-library |
从加载路径加载 Lisp 库 |
:- | :- |
---|---|
M-x customize |
自定义变量和面 |
在 Emacs Lisp 中进行全局键绑定:
(global-set-key (kbd "C-c g") ’search-forward)
(global-set-key (kbd "M-#") ’query-replace-regexp)
:- | :- |
---|---|
C-x a g |
添加全局缩写 |
C-x a l |
添加模式本地缩写 |
C-x a i g |
为这个缩写添加全局扩展 |
C-x a i l |
为这个缩写添加模式本地扩展 |
C-x a e |
显式扩展缩写 |
M-/ |
动态扩展前一个单词 |
:- | :- |
---|---|
M-$ |
检查当前单词的拼写 |
M-x ispell 地区 |
检查区域内所有单词的拼写 |
M-x ispell 缓冲区 |
检查整个缓冲区的拼写 |
M-x flyspell 模式 |
切换即时拼写检查 |
(defun command-name (args)
"documentation" (interactive "template")
body)
(defun this-line-to-top-of-window (line)
"Reposition current line to top of window.
With prefix argument LINE, put point on LINE."
(interactive "P")
(recenter (if (null line)
0
(prefix-numeric-value line))))