Emacs基本操作

主要定制编辑器主要围绕这些基础操作,所以必须先了解 Emacs 基本的操作使用。基本上把常用的快捷键都列出来了,后续主要是针对这些基础操作的升级改造,自定义一些方便,容易记住的快捷键。

Emacs的快捷键都是绑定在 CtrlAlt (或称 Meta )上的,例如 C-x 就是 Ctrl+xM-x 就是 Alt+x 或者 Esc+x

文件操作

快捷键 说明
C-x C-f 打开文件
C-x C-s 保存文件
C-x C-w 存为新文件
C-x C-c 退出Emacs

编辑操作

快捷键 说明
C-f 前进一个字符
C-b 后退一个字符
M-f 前进一个字
M-b 后退一个字
C-a 移到行首
C-e 移到行尾
M-a 移到句首
M-e 移到句尾
C-p 后退一行
C-n 前进一行
C-v 向下翻页
M-v 向上翻页
M-< 缓冲区头部
M-> 缓冲区尾部
C-l 当前行居中
C-d 删除一个字符
M-d 删除一个字
C-k 删除一行
M-k 删除一句
C-w 删除标记区域
C-t 交换两个字符的位置
M-t 交换两个单词的位置
C-y 粘贴删除的内容
C-x h 标记所有文字
M-w 复制标记区域
M-u 使从光标位置到单词结尾处的字母变成大写
M-l 与M-u 相反使从光标位置到单词结尾处的字母变成小写
M-c 使从光标位置开始的单词的首字母变为大写
C-/ or C-x u 撤消操作
C-u 重复执行后一个命令,输入一个重复的次数
C-u n 重复执行后一个命令n 次
C-x u 撤销前一个命令
C-x C-t 交换两行的位置
M-g M-g 跳到指定行
C-S-@ 开启标记mark
M-x revert-buffer RETURN 撤销上次存盘后所有改动
M-x recover-file RETURN 从自动存盘文件恢复
M-x recover-session RETURN 如果你编辑了几个文件, 用这个恢复
M-C-\ 自动缩进光标和标记间的区域
M-^ 将当前行接到上一行末尾处
M-; 添加缩进并格式化的注释
C-M-a 移动光标到函数的开始处
C-M-e 移动光标到函数的结尾处
C-c RETURN 将光标移动到函数的开始处并标记到结尾处
C-c C-q 根据缩进风格缩进整个函数
C-c C-a 切换自动换行功能
C-c C-d 一次性删除光标后的一串空格(greedy delete)
M-. (点) 搜索标签
M-x tags-search ENTER 在所有标签里搜索(使用正则表达式)
M-, (逗号) 在tags-search 里跳至下一个匹配处
M-x tags-query-replace 在设置过标签的所有文件里替换文本

执行SHELL命令

快捷键 说明
M-x shell 打开SHELL(执行任意命令都是用这个快捷键),切入shell模式
C-c C-c 类似unix 里的C-c(停止正在运行的程序)
C-d 删除光标后一个字符
C-c C-d 发送EOF
C-c C-u 删除当前行(unix 下的C-u)
C-c C-z 挂起程序(unix 下的C-z)
M-p 显示前一条命令
M-n 显示后一条命令
M-! 执行SHELL命令 (shell-command)

窗口操作

快捷键 说明
C-x 0 关闭本窗口
C-x 1 只留下一个窗口
C-x 2 垂直均分窗口
C-x 3 水平均分窗口
C-x o 切换到别的窗口
C-x s 保存所有窗口的缓冲
C-x b 选择当前窗口的缓冲区
C-M v 另外一个窗口向下翻页(需要对照时很好用)
C-M-Shift v 另外一个窗口向上翻页
C-x 4 f 在其他窗格中打开文件
C-x 4 0 关闭当前缓冲区和窗格
C-x 5 2 新建窗口(frame)
C-x 5 f 在新窗口中打开文件
C-x 5 o 切换至其他窗口
C-x 5 0 关闭当前窗口
C-x 5 b 创建新窗格并显示另一个编辑缓冲区

缓冲区列表操作

快捷键 说明
C-x C-b 打开缓冲区列表
C-x k 关闭缓冲区

搜索模式

快捷键 说明
C-s 向前搜索
C-s 查找下一个
ENTER (回车键)停止搜索
C-r 反向搜索
C-s C-w 以光标所在位置的字为关键字搜索
C-M-s 向前正则搜索
C-M-r 向后正则搜索
C-M-% 正则交互替换
M-x replace-string ENTER search-string ENTER ENTER(回车键) 替换

Directory Editor (dired)

快捷键 说明
C-x d 打开dired模式
C(大写C) 复制
d 标记等待删除
D 立即删除
e 或f 打开文件或目录
g 刷新当前目录
G 改变文件所属组(chgrp)
k 从屏幕上的列表里删除一行(不是真的删除)
m 用*标记
n 光标移动到下一行
o 在另一个窗格打开文件并移动光标
C-o 在另一个窗格打开文件但不移动光标
P 打印文件
q 退出dired
Q 在标记的文件中替换
R 重命名文件
u 移除标记
v 显示文件内容
x 删除有D 标记的文件
Z 压缩/解压缩文件
M-Del 移除标记(默认为所有类型的标记)
~ 标记备份文件(文件名有~的文件)等待删除
# 标记自动保存文件(文件名形如#name#)等待删除
*/ 用*标记所有文件夹(用C-u */n 移除标记)
= 将当前文件和标记文件(使用C-@标记而不是dired 的m 标记)比较
M-= 将当前文件和它的备份比较
! 对当前文件应用shell 命令
M-} 移动光标至下一个用*或D 标记的文件
M-{ 移动光标至上一个用*或D 标记的文件
% d 使用正则表达式标记文件等待删除
% m 使用正则表达式标记文件为*
+ 新建文件夹
> 移动光标至后一个文件夹
< 移动光标至前一个文件夹
s 切换排序模式(按文件名/日期)
或许把这个命令归入这一类也很合适:
M-x speedbar 打开一个独立的目录显示窗口

书签命令(Bookmark commands )

快捷键 说明
C-x r m 在光标当前位置创建书签
C-x r b 转到书签
M-x bookmark-rename 重命名书签
M-x bookmark-delete 删除书签
M-x bookmark-save 保存书签
M-x bookmark-load 从指定文件导入书签
M-x bookmark-write 将所有书签导出至指定文件
C-x r l 列出书签清单,进入书签列表模式
d 标记等待删除
Del 取消删除标记
x 删除被标记的书签
r 重命名
s 保存列表内所有书签
f 转到当前书签指向的位置
m 标记在多窗口中打开
v 显示被标记的书签(或者光标当前位置的书签)
t 切换是否显示路径列表
w 显示当前文件路径
q 退出书签列表

宏命令(Macro-commands)

快捷键 说明
C-x ( 开始定义宏
C-x ) 结束定义宏
C-x e 运行最近定义的宏
M-n C-x e 运行最近定义的宏n 次
M-x name-last-kbd-macro 给最近定义的宏命名(用来保存)
M-x insert-kbd-macro 将已命名的宏保存到文件
M-x load-file 载入宏
C-u C-x ( 执行最后一次录制的宏,然后允许再增加新按键组合
C-x q 在宏定义里面插入一个查询
C-u C-x q 在宏定义里面插入一个递归编辑
C-M-c 退出递归编辑

帮助

快捷键 说明
C-h t 入门指南
C-h ? 查看帮助列表
C-h c 显示快捷键绑定的命令
C-h k 显示快捷键绑定的命令和它的作用
C-h l 显示最后100 个键入的内容
C-h w 显示命令被绑定到哪些快捷键上
C-h f 显示函数的功能
C-h v 显示变量的含义和值
C-h m 显示当前编辑缓冲区所在编辑模式的有关资料
C-h a 这个概念涉及到哪些命令
C-h b 显示当前缓冲区所有可用的快捷键
C-h i 打开info 阅读器
C-h p 显示本机Elisp 包的信息
C-h C-f 显示emacs FAQ