Emacs基本的按键与命令
按键前缀
C-
:表示键盘上的Ctrl
键
M-
:表示键盘上的Alt
键
S-
:表示键盘上的Shift
键
DEL
:表示键盘上的Backspace
键,注意,不是Delete
键
RET
:表示键盘上的Enter
键
SPC
:表示键盘上的Space
键
ESC
:表示键盘上的Esc
键
TAB
:表示键盘上的Tab
键
文件
C-x C-f
:打开一个文件,或者创建一个不存在的文件
M-x find-file
:作用同上
C-x k
:关闭一个buffer
,作用等于关闭已经打开的文件
C-x C-s
:保存文件内容,即将修改的文件内容写入磁盘
M-x save-buffer
:作用同上
C-x C-w
:将当前文档保存为另一个文件,即另存为
M-x write-file
:作用同上
C-x b
:切换文件,即切换缓冲区buffer
说明:实际上在Emacs
中,文件与buffer
是不同的实体,文件一般指的是磁盘上的数据体,而buffer
是Emacs
中作为文件修改临时缓存的缓冲区,注意区别。
ido模式
Emacs具有一个被称为ido
的模式,全称为interactively do things
,在ido
模式下,可以更加方便地选择列表元素,相比使用Tab进行自动补全更加便利。
M-x ido-mode
:使能或者禁止ido
模式
可以在Emacs
的启动配置中添加以下语句,以默认打开ido
模式:
(setq ido-enable-flex-matching t) (setq ido-everywhere t) (ido-mode 1)
buffer
C-x C-b
:列出buffer列表
M-x list-buffers
:作用同上
在Emacs
中,还存在功能更灵活的buffer
管理模式,被称为ibuffer
。可以通过以下命令进入ibuffer
:
M-x ibuffer
:进入ibuffer
管理模式
一般我们可以在Emacs的配置文件中进行ibuffer的命令键绑定:
(global-set-key (kbd "C-x C-b") 'ibuffer)
ibuffer
的过滤命令包括:
/m
:以major mode
方式添加过滤
/n
:以buffer
名称的方式添加过滤
/c
:以buffer
内容的方式添加过滤
/f
:以文件名称的方式添加过滤
/>
:以buffer
大小的方式添加过滤
/<
:以buffer
大小的方式添加过滤
//
:删除当前所有有效的过滤
ibuffer
的过滤组的命令包括:
/g
:创建一个过滤组
TAB
:移动到下一个过滤组
M-p
:移动到上一个过滤组
/\
:删除当前所有的过滤组
/S
:将当前过滤组保存为一个名称
/R
:恢复之前保存的过滤组
/X
:删除之前保存的过滤组
ibuffer的排序命令包括:
s a
:以字母顺序排序
s f
:以文件名称顺序排序
s v
:以上次访问时间排序
s s
:以buffer
大小排序
s m
:以major mode
排序
s i
:反序当前的buffer
顺序
书签
可以在文件的任何地方设置书签,后续可快速跳转到书签处,书签相关的命令为:
C-x r m
:在当前光标处设置书签,需输入书签名称
M-x bookmark-set
:作用同上
C-x r b
:跳转到某个书签处
M-x bookmark-jump
:作用同上
C-x r l
:列出当前所有的书签列表
M-x bookmark-bmenu-list
:作用同上
在书签列表状态下,可以使用以下的命令:
RET
:打开书签标识的区域
s
:将当前书签列表保存至文件中
r
:修改光标所在的书签的名称
d
:将书签打上删除标识
x
:删除已打标识的书签
u
:取消已经打标识的书签
光标移动
主要的光标移动操作命令包括:
C-f
:向前移动一个字符,f
表示为forward
C-b
:向后移动一个字符,b
表示backward
C-p
:向上移动一行,p
表示previous
C-n
:向下移动一行,n
表示next
C-a
:移动至行首
C-e
:移动至行尾
M-f
:向前移动一个单词
M-b
:向后移动一个单词
C-v
:向前滚动一个屏幕的内容
M-v
:向后滚动一个屏幕的内容
M-a
:移动至句首
M-e
:移动至句尾
C-l
:将光标重定位至屏幕中间一行,光标所在内容位置不变
M-r
:将光标重定位至屏幕的顶部,中部,底部,光标所在内容位置不变
M-<
:移动至buffer
的开头处,注意,按键<
可能需要Shift
键
M->
:移动至buffer
的结尾处,注意,按键>
可能需要Shift
键
M-g c n
:移动至第n
个字符
M-g g n
:移动至第n
行(高于23.2版本的Emacs
有效)
C-M-f
:向前移动一个整的表达式,比如,光标可从函数开头的左{
处移动到函数结尾的}
处,按键绑定的命令是forward-sexp
C-M-b
:向后移动一个整的表达式,比如,光标可从函数结尾的右}
处移动到函数开头的{
处,按键绑定的命令是backward-sexp
C-M-k
:剪切一个整的表达式,按键绑定的命令是kill-sexp
C-M-@
:选择一个整的表达式,按键绑定的命令是mark-sexp
剪切
在Emacs
中,kill
的意思就是cut
,即剪切,剪切操作的命令包括:
C-d
:剪切当前光标所在的字符
C-S-DEL
:剪切整个行,DEL
就是键盘上的Backspace
键
M-d
:剪切光标当前位置至词结尾的内容
M-DEL
:剪切光标当前位置至词开头的内容
M-\
:剪切光标所在的所有空白符
M-SPC
:剪切光标所在的所有空白符,除了光标所在的位置
C-k
:剪切光标当前位置至行尾
M-k
:剪切当前的整个句
粘贴
C-y
:粘贴操作
选择
一般在Emacs
中,默认的选择操作,需要使用C-SPC
按键,但是通常在Win
中,此按键与系统默认的切换输入法的按键冲突,如果无法修改系统的按键,则可以修改C-SPC
按键,在Emacs
的启动脚本中添加以下的语句:
(global-unset-key (kbd "C-SPC")) (global-set-key (kbd "M-SPC") 'set-mark-command)
以下以M-SPC
作为默认的选择命令:
M-SPC
:以光标所在位置为起点,移动光标,所选区域被高亮选中
C-w
:剪切高亮选中的区域
M-w
:复制高亮选中的区域
C-y
:粘贴高亮选中的区域
撤销
C-/
:撤销操作
C-x u
:作用同上
查找
Emacs
具有多种查找方式。
增量查找:通过按键C-s
来执行增量查找,反复执行C-s
,可逐个定位各个匹配点。
C-s
:执行增量查找,输入查找字符后,重复执行C-s
可逐个定位匹配点,按键绑定的命令是isearch-forward
C-r
:执行增量查找,是从文档的后端往前查找,重复执行C-r
可逐个定位匹配点,按键绑定的命令是isearch-backward
C-u C-s
:按照正则表达式执行增量查找
Occur查找:使用增量查找,若匹配点比较多,只能通过反复执行按键,逐个越过各个匹配点,才能定位到我们需要的匹配点,为了解决这个问题,Emacs
提供了Occur
查找,执行后,可在Occur
缓冲区列出一个匹配点的列表,可更加直观地查看所有的匹配点。
M-s o
:执行Occur查找
M-g n
:定位到下一个匹配点
M-g p
:定位到上一个匹配点
在Occur
缓存区,可以执行的命令主要包括:
C-n
:移动至下一行
C-p
:移动至上一行
o
:跳转至匹配点,光标也移动至匹配点
C-o
:跳转至匹配点,但是光标还停留在Occur
缓冲区
e
:编辑当前的Occur
缓冲区
C-c C-c
:退出编辑Occur
缓冲区
替换
M-%
:执行查找替换,该命令需要两个输入,即需要被替换的字符串,与替换后的字符串。输入字符串后执行RET
,Emacs
会询问是否确定执行替换操作,若输入!
,则执行所有匹配点的替换,若输入yes
,则只执行当前光标所在的匹配点的替换。注意,输入%
可能需要执行Shift
键
窗口
C-x 2
:将当前窗口切为上下两个窗口,该按键绑定了命令split-window-below
C-x 3
:将当前窗口切为左右两个窗口,该按键绑定了命令split-window-right
C-x o
:在多个窗口之间切换,注意,按键中的是小写字母o
,该按键绑定了命令other-window
C-x 1
:关闭其他的窗口,只保留当前光标所在的窗口
Dired
Emacs
具有一个内置的Dired
模块,是Directory Editor
的简称,顾名思义,该模块是对目录进行管理编辑的模块。
Dired
模块的主要命令包括:
C-x d
:选择一个目录,并在那个目录上启动Dired
C-x C-f
:选择当前目录下的某个目录,并在那个目录上启动Dired
在Dired
目录下可以执行:
n
:向下移动一个
p
:向上移动一个
C-s
:使用增量查找,查询Dired
入口
C-x C-f
:创建一个新的文件
f
:打开光标所在的文件
e
:作用同上
RET
:作用同上
o
:在另一个窗口上打开光标所在的文件
C-o
:在另一个窗口上打开光标所在的文件,但是光标不会移动到新的窗口
v
:以只读的方式打开文件
^
:在新的Dired Buffer中打开父目录
m
:标识文件或者目录入口
%m
:标识那些名称匹配正则表达式的文件
%g
:标识那些内容匹配正则表达式的文件
C
:拷贝文件(或者是S-c
),拷贝的是当前光标所在的文件,或者已经标识的文件
R
:移动文件(或者是S-r
),移动的是当前光标所在的文件,或者已经标识的文件
H
:创建一个硬链接(或者是S-h
)
S
:创建一个符号链接(或者是S-s
)
M
:改变文件的权限位(或者是S-m
),改变的文件是当前光标所在的文件,或者已经标识的文件
d
:将文件打上删除的标识
u
:删除文件已经打上的标识
x
:确认并执行删除已经打上删除标识的文件
~
:给所有的backup
文件打上标识
=
:比较文件