Emacs 是可扩展的、可定制的、自记录的实时显示文本编辑器。此参考适用于 Emacs 27+
入门 启动 Emacs 要进入 Emacs,只需输入其名称:
:- :- C-z挂起 Emacs C-x C-c永久退出 Emacs
全局描述 :- :- C-<key>表示按住控件,然后按 <key> M-<key>表示按 Esc 一次,然后按 <key>
注意:本备忘单遵循上述规则
移动 返回 向前 要移动的实体 C-bC-fHaracter M-bM-f单词 C-pC-n线 C-aC-e行开头(或结尾) M-aM-e句子 M-{M-}段落 C-x [C-x ]页 C-M-bC-M-fSexp C-M-aC-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 recover-session恢复因系统崩溃而丢失的文件 C-x u C-_ C-/撤消不需要的更改 M-x revert-buffer将缓冲区恢复到其原始内容 C-l重绘垃圾屏幕
Transposing :- :- 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标记整个缓冲区
杀死和删除 向后 向前 要杀死的实体 DELC-d字符(删除) M-DELM-d单词 M-0 C-kC-k行 (到结尾) C-x DELM-k句子 M-- C-M-kC-M-k性爱
杀死 :- :- C-W杀死区域 C-w M-w复制区域杀死环 M-z char杀死下一次出现的字符 C-y拉回最后一个被杀的东西 M-y用之前的杀戮替换最后的猛拉
获得帮助 :- :- C-x 1删除帮助窗口 C-M-v滚动帮助窗口 C-h aApropos:显示匹配字符串的命令 C-h k描述一个键运行的功能 C-h f描述一个函数 C-h m获取特定于模式的信息
帮助系统很简单。键入 C-h(或 F1)并按照说明进行操作。如果您是第一次使用,请键入 C-h t 以获得教程
多个窗口 当显示两个命令时,第二个命令是用于框架而不是窗口的类似命令
:- :- :- C-x 5 1C-x 1删除所有其他窗口 C-x 5 2C-x 2拆分窗口,上方和下方 C-x 5 0C-x 0删除此窗口
:- :- :- C-x 3拆分窗口,并排 C-M-v滚动其他窗口
:- :- :- C-x 5 oC-x o将光标切换到另一个窗口 C-x 5 bC-x 4 b在其他窗口中选择缓冲区 C-x 5 C-oC-x 4 C-o在其他窗口中显示缓冲区 C-x 5 fC-x 4 f在其他窗口中查找文件 C-x 5 rC-x 4 r在其他窗口中以只读方式查找文件 C-x 5 dC-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 中查找指定的函数或变量
在节点内移动 在节点之间移动 :- :- 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 visit-tags-table指定一个新的标签文件 M-x tags-search正则表达式搜索标签表中的所有文件 M-x tags-query-replace对所有文件运行查询替换 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 定义
Emacs 搜索 正则表达式(常用) :- :- . (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 退出)
杂项 Shell :- :- 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带引号的插页
处理 Emacs Lisp 的命令 :- :- C-x C-e评估点前的性 C-M-x评估电流定义 M-x eval-region评估区 M-:读取和评估 minibuffer M-x load-library从加载路径加载 Lisp 库
简单的定制 在 Emacs Lisp 中进行全局键绑定:
1 2 (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-region检查区域内所有单词的拼写 M-x ispell-buffer检查整个缓冲区的拼写 M-x flyspell-mode切换即时拼写检查
编写命令 语法 1 2 3 (defun command-name (args) "documentation" (interactive "template") body)
示例 1 2 3 4 5 6 7 (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))))