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 中作为文件修改临时缓存的缓冲区,注意区别。
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)
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 :关闭其他的窗口,只保留当前光标所在的窗口
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 文件打上标识
= :比较文件