注意:以下命令中标注的按键,大写的c代表control,在键盘上通常是ctrl键,而m代表meta,在键盘上通常是alt键,s则代表shift,在键盘上通常是shift键,也就是
c
control
m
alt
s
shift
这三个键在emacs里通常作为组合键的前导按键使用,也就是说,执行一条命令前可能需要按住这个键不放,比如搜索命令是c-s,要执行这个命令首
先要按住ctrl键不放,再按下字母s键;而打开文件命令是c-x
c-f,要打开文件就必须按下ctrl键不放,依次按下x和f(当然也可以按下ctrl不放再按下x,放开,再按下ctrl不放再按f);有的命令组合键
和非组合键都要用到,比如保存所有文件是c-x
s,需要按下ctrl不放的时候按下x,然后放开所有按键,再按下s;也有两个组合按键一起使用的,比如使用正则表达式进行增量搜索的快捷键是c-
s-%,这就要求你同时按下ctrl和alt不放开,再按下s。
启动emacs
在有图形界面的环境下只需要在终端输入emacs按回车或者找到启动emacs程序的图标打开就可以了。
在没有图形界面的环境或者伪终端下需要使用字符界面的emacs可以输入emacs -nw,也就是增加一个-nw参数。
挂起emacs
c-z
挂起在图形界面下通常是把emacs窗口最小化的意思,而在字符界面下则是把emacs挂起到后台后回到终端,比如在gnu/linux字符终端下
按c-z会回到shell,使用jobs命令可以列出你挂起的所有任务,使用fg可以返回以最后一次挂起的任务,fg
%num可以选择回到任意一个被挂起的任务。
退出emacs
c-x c-z
如果没有未保存的文件,那么这条命令会直接退出emacs程序,否则它会提示是否保存文件。
文件
打开文件
c-x c-f
保存文件
c-x c-s
保存所有文件
c-x s
插入其他文件到当前缓冲区
c-x i
在当前缓冲区打开另一个文件
c-x c-v
另存为文件
c-x c-w
获取帮助
打开快速指南
c-h t
获取按键帮助
c-h k
获取函数帮助
c-h f
打开emacs帮助手册
c-h r
错误恢复
放弃当前命令或终止正在执行的操作
c-g
恢复因系统崩溃而丢失的文件
m-x recover-file
撤销上一次操作
c-x u或c-_
还原缓冲区的内容
m-x revert-buffer
刷新屏幕
c-l
增量搜索
正向搜索
c-s
反向搜索
c-r
使用正则表达式正向搜索
c-m-s
使用正则表达式反向搜索
c-m-r
选择上一个搜索结果
m-p
选择下一个搜索结果
m-n
退出搜索并停留在当前搜索到的位置
ret
中止当前搜索
移动
移动的单位
向后
向前
字符
c-b
c-f
单词
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
函数
c-m-a
c-m-e
缓冲区开头或结尾
m-<
m->
垂直滚动屏幕
c-v
m-v
水平滚动屏幕
c-x <
c-x >
滚动当前行到屏幕中央
c-u
指定行移动
m-g m-g
删除
删除的单位
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-s-del
删除区域
c-w
复制区域到删除环
m-w
删除到字符
m-z char
从删除环中拉回内容
c-y
从删除环中拉回更早期的内容
m-y
注:这里的del在你的键盘上可能是backspace
标记
设置标记
c-@
在当前光标位置和标记处跳转
c-x c-x
设置单词标记
m-@
标记段
m-h
标记页
c-x c-p
标记表达式
c-m-@
标记函数
c-m-h
标记整个缓冲区
c-x h
查询替换
交互替换
m-%
使用正则表达式
m-x query-replace-regexp
在查询替换模式下:
替换当前项并跳转到下一项
spc
替换当前项不跳转
,
不替换当前项并跳转到下一项
替换全部剩下的查询结果
!
回到上一个匹配结果
^
退出查询替换
进入递归编辑(c-m-c退出)
多窗格
首先解释一下,emacs里一个框(frame)是值窗口系统中的一个窗口,一个窗格(window)则是指显示在一个frame
命令描述
窗格
框
删除所有其他窗格
c-x 1
垂直分割
c-x 2
c-x 5 2
删除当前窗格
c-x 0
c-x 5 0
水平分割
c-x 3
滚动其他窗格
c-m-v
切换到另一个窗格
c-x o
c-x 5 o
在其他窗格切换缓冲区
c-x 4 b
c-x 5 b
在其他窗格显示缓冲区
c-x 4 c-o
c-x 5 c-o
在其他窗格打开文件
c-x 4 f
c-x 5 f
在其他窗格以只读方式打开文件
c-x 4 r
c-x 5 r
在其他窗格打开目录
c-x 4 d
c-x 5 d
在其他窗格查找标签
c-x 4 .
c-x 5 .
窗格高度增加
c-x ^
窗格宽度减少
c-x {
窗格宽度增加
c-x }
格式化
缩进当前行
tab
缩进区域
c-m-/
缩进表达式
c-m-q
增加缩进
c-x tab
在当前位置后增加新行
c-o
当前位置到行尾的内容下移
c-m-o
删除当前位置附近的空行
c-x c-o
将当前行连接到上一行
m-^
删除光标附近的空白
m-/
大小写转换
单词转换为大写
m-u
单词转换为小写
m-l
单词转换为首字母大写
m-c
区域转换为大写
c-x c-u
区域转换为小写
c-x c-l
微型缓冲区
尽可能多地补全
补全至多一个单词
补全并执行
显示可能的补全项
?
切换到上一个输入
切换到下一个输入
用正则表达式往后搜索历史记录
m-r
用正则表达式往前搜索历史记录
m-s
终止命令
缓冲区
选择另一个缓冲区
c-x b
列出所有缓冲区
c-x c-b
关闭一个缓冲区
c-x k
交换字符
c-t
交换单词
m-t
交换行
c-x c-t
交换表达式
c-m-t
交换
拼写检查
见车当前单词拼写
m-$
检查区域内所有单词
m-x ispell-region
检查整个缓冲区
m-x ispell-buffer
标签
查找标签
m-.
查找下一个标签
c-u m-.
指定一个新标签
m-x visit-tags-table
在标签表内的所有文件用正则表达式搜索
m-x tags-search
在所有文件内运行查询替换
m-x tags-query-replace
继续最后一个标签搜索或查询替换
m-,
shells
执行一个外部命令
m-!
在当前区域运行一shell命令
m-|
使用一个外部命令处理当前区域
c-u m-|
启动一个shell
m-x shell
矩形区域
复制矩形区域到寄存器
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 a g
增加模式缩写
c-x a l
给这个缩写增加全局扩展
c-x a i g
给这个缩写增加模式扩展
c-x a i l
扩展缩写
c-x a e
动态扩展上一个单词
正则表达式
匹配换行符之外的任何字符
.
任意次重复
*
一次或一次以上重复
+
一次或一次也没有
转义字符
/c
分支
/|
分组
/(.../)
第n组
/n
单词开始或结束
/b
非单词开始或结束
单位
开始
结束
$
词
/<
/>
缓冲区
/'
字符类别
匹配
不匹配
字符集合
[ ... ]
[^ ... ]
/w
国际化字符集
指定语言
m-x set-language-environment
显示所有输入法
m-x list-input-methods
开启或禁用输入法
c-/
设置命令编码系统
c-x ret c
显示所有编码系统
m-x list-coding-systems
选择编码系统
m-x prefer-coding-system
信息
进入信息文档阅读器
c-h i
在信息文档中查找指定的函数或变量
c-h c-i
在节点中移动
往前滚动
反向滚动
节点开始处
节点间移动
下一个节点
n
上一个节点
p
上一层
u
通过名字选择菜单项
选择第n个菜单项
填转到节点
f
返回上一次所在的节点
l
返回到目录节点
d
通过名字跳转到任意节点
g
其他:
进入快速指南
h
退出信息文档
q
用正则表达式搜索节点
寄存器
保存区域到寄存器
c-x r s
插入寄存器内容到缓冲区
c-x r i
保存当前位置到寄存器
c-x r spc
跳转到保存在寄存器中的位置
c-x r j
键盘宏
开始记录键盘宏
c-x (
结束记录键盘宏
c-x )
执行最后一个宏
c-x e
追加内容到最后一个键盘宏
c-u c-x
给最后一个键盘宏命名
m-x name-last-kbd-macro
插入键盘宏的lisp定义到当前缓冲区
m-x insert-kbd-macro