天天看点

Emacs常用命令汇总

注意:以下命令中标注的按键,大写的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