emacs常用快捷键 emacs快捷键大全_编程开发教程-查字典教程网
emacs常用快捷键 emacs快捷键大全
emacs常用快捷键 emacs快捷键大全
发布时间:2017-01-04 来源:查字典编辑
摘要:Emacs这个东东听说功能很强大。不过感觉有些难学,还好网络上的资源还是比较丰富的。目前基于最基本的文本编辑来学习。而且它的快捷键很多,所以...

Emacs这个东东听说功能很强大。不过感觉有些难学,还好网络上的资源还是比较丰富的。目前基于最基本的文本编辑来学习。而且它的快捷键很多,所以要在使用过程中学习会比较容易记住。这个是从网上搜索来的,总结的比较好的,贴在自己这里当做摘录了,方便查询。

C = Control

M = Meta = Alt | Esc

Del = Backspace

RET = Enter

没啥好说的了,每个按键都去试验下吧,注意观察所有窗口的变化

C = Ctrl

M = Meta = Alt | Esc

Del = Backspace

emacs中最常用的快捷键绑定为“C+n" 其中 n为任意字符

次常用绑定为“ESC n",文件操作通常为“C-x n"

与编辑模式相关通常为“C-n n"

基本命令C-x C-c : 退出EmacsC-x C-f : 打开一个文件,如果文件不存在,则创建一个文件C-g : 取消未完成的命令

emacs -nw :不以gui形式启动

移动光标

C-v : 向前翻页

M-v : 向后翻页

M-r : 将光标移动到屏幕中间那行

C-a : 移到行首

M-a : 移到句首,从行首到句首之间可能有空格

C-e : 移到行尾

M-e : 移到句尾

M-{ : 向上移动一段

M-} : 向下移动一段

C-right,esc-f : 向前移动一个单词

C-left ,esc-b: 向后移动一个单词

C-up : 向前移动一段

C-down : 向后移动一段

M-< : 移到整个文本开头

M-> : 移到整个文本末尾

M-r : 将游标移到目前视窗的中央

C-u 数字 命令 : 执行多次(数字表示次数)该命令;“M-数字 命令” 也可以

M-gg(M-x goto-line) : 移动到某一行

C-l : 重绘屏幕,效果就是当前编辑行移动窗口中央

窗口操作

C-x 0 : 关闭当前窗口

C-x 1 : 将当前窗口最大化

C-x 2 : 垂直分割窗口

C-x 3 : 水平分割窗口C-u) C-x ^ : 加高当前窗口,如果有C-u,则每次加高4行(C-u) C-x } : 加宽当前窗口(C-u) C-x { : 压窄当前窗口ESC C-v : 在其它窗口进行卷屏操作搜索和替换

搜索和替换

C-s : 向前搜索(增量式搜索);连续C-s,跳到下一个搜索到的目标

C-s RET : 普通搜索

C-r : 向前搜索

C-s RET C-w : 按单词查询

M-% : 查询替换,也就是替换前会询问一下

M-x replace-string : 普通替换

Bookmark

C-x r m : 设置书签bookmark

C-x r b : 跳到bookmark处

esc c-n(c-m-n):调到后面对应的括号

esc c-p(c-m-p):调到前面对应的括号

帮助

C-h ? : 查看帮助信息

C-h f : 查看一个函数,此处的函数是指lisp语言中的某个函数的意思;

C-h v : 查看一个变量

C-h k : 查看一个键绑定 (C-h c 也是查看键绑定,但是信息较简略)

C-h C-f : 查看一个函数的Info,非常有用

C-h i : 看Info

删除命令

<Delback> 删除光标前的一个字符 C-d 删除光标后的一个字符 M-<Delback> 移除光标前的一个词 M-d 移除光标后的一个词

C模式快捷键

C-M- : 对选中区域,按照某种格式(比如C程序)进行格式化

C-x h : 全部选中

M-! : 执行外部shell命令

M-x shell : 模拟shell的buffer

ALT-/ : 快速补全

ESC-m :把光标移到当前行的第一个非空字符上

ESC-^:把当前行合并到上一行

ESC ; :添加注释

ESC j :下一行添加注释

C-c C-a:自动换行

基本快捷键(Basic)

C-x C-f “find”文件, 即在缓冲区打开/新建一个文件

C-x C-s 保存文件

C-x C-w 使用其他文件名另存为文件

C-x C-v 关闭当前缓冲区文件并打开新文件

C-x i 在当前光标处插入文件

C-x b 新建/切换缓冲区

C-x C-b 显示缓冲区列表

C-x k 关闭当前缓冲区

C-z 挂起emacs

C-x C-c 关闭emacs

光标移动基本快捷键(Basic Movement)

C-f 后一个字符

C-b 前一个字符

C-p 上一行

C-n 下一行

M-f 后一个单词

M-b 前一个单词

C-a 行首

C-e 行尾

C-v 向下翻一页

M-v 向上翻一页

M-< 到文件开头注意这里是‘<’不是‘,’需要按shift,遇到相同情况下同

M-> 到文件末尾

编辑(Editint)

M-n 重复执行后一个命令n次

C-u 重复执行后一个命令4次

C-u n 重复执行后一个命令n次

C-d 删除(delete)后一个字符

M-d 删除后一个单词

Del 删除前一个字符

M-Del 删除前一个单词

C-k 移除(kill)一行

C-Space 设置开始标记 (例如标记区域)

C-@ 功能同上, 用于C-Space被操作系统拦截的情况

C-w 移除(kill)标记区域的内容

M-w 复制标记区域的内容

C-y 召回(yank)复制/移除的区域/行

M-y 召回更早的内容 (在kill缓冲区内循环)

C-x C-x 交换光标和标记

C-t 交换两个字符的位置

M-t 交换两个单词的位置

C-x C-t 交换两行的位置

M-u 使从光标位置到单词结尾处的字母变成大写

M-l 与M-u相反

M-c 使从光标位置开始的单词的首字母变为大写

重要快捷键(Important)

C-g 停止当前运行/输入的命令

C-x u 撤销前一个命令

M-x revert-buffer RETURN (照着这个输入)撤销上次存盘后所有改动

M-x recover-file RETURN 从自动存盘文件恢复

M-x recover-session RETURN 如果你编辑了几个文件, 用这个恢复

在线帮助(Online-Help)

C-h c 显示快捷键绑定的命令

C-h k 显示快捷键绑定的命令和它的作用

C-h l 显示最后100个键入的内容

C-h w 显示命令被绑定到哪些快捷键上

C-h f 显示函数的功能

C-h v 显示变量的含义和值

C-h b 显示当前缓冲区所有可用的快捷键

C-h t 打开emacs教程

C-h i 打开info阅读器

C-h C-f 显示emacs FAQ

C-h p 显示本机Elisp包的信息

搜索/替换(Seach/Replace)

C-s 向后搜索

C-r 向前搜索

C-g 回到搜索开始前的位置(如果你仍然在搜索模式中)

M-% 询问并替换(query replace)

Space或y 替换当前匹配

Del或n 不要替换当前匹配

. 仅仅替换当前匹配并退出(替换)

, 替换并暂停(按Space或y继续)

! 替换以下所有匹配

^ 回到上一个匹配位置

RETURN或q 退出替换

使用正则表达式(Regular expression)搜索/替换

可在正则表达式中使用的符号:

^ 行首

$ 行尾

. 单个字符

.* 任意多个(包括没有)字符

< 单词开头

> 单词结尾

[] 括号中的任意一个字符(例如[a-z]表示所有的小写字母)

M C-s RETURN 使用正则表达式向后搜索

M C-r RETURN 使用正则表达式向前搜索

C-s 增量搜索

C-s 重复增量搜索

C-r 向前增量搜索

C-r 重复向前增量搜索

M-x query-replace-regexp 使用正则表达式搜索并替换

窗口命令(Window Commands)

C-x 2 水平分割窗格

C-x 3 垂直分割窗格

C-x o 切换至其他窗格

C-x 0 关闭窗格

C-x 1 关闭除了光标所在窗格外所有窗格

C-x ^ 扩大窗格

M-x shrink-window 缩小窗格

M C-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 关闭当前窗口

书签命令(Bookmark commands)

C-x r m 在光标当前位置创建书签

C-x r b 转到书签

M-x bookmark-rename 重命名书签

M-x bookmark-delete 删除书签

M-x bookmark-save 保存书签

C-x r l 列出书签清单

d 标记等待删除

Del 取消删除标记

x 删除被标记的书签

r 重命名

s 保存列表内所有书签

f 转到当前书签指向的位置

m 标记在多窗口中打开

v 显示被标记的书签(或者光标当前位置的书签)

t 切换是否显示路径列表

w 显示当前文件路径

q 退出书签列表

M-x bookmark-write 将所有书签导出至指定文件

M-x bookmark-load 从指定文件导入书签

Shell

M-x shell 打开shell模式

C-c C-c 类似unix里的C-c(停止正在运行的程序)

C-d 删除光标后一个字符

C-c C-d 发送EOF

C-c C-z 挂起程序(unix下的C-z)

M-p 显示前一条命令

M-n 显示后一条命令

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 打开一个独立的目录显示窗口

Telnet(大致了解)

M-x telnet 打开telnet模式

C-d 删除后一个字符或发送EOF

C-c C-c 停止正在运行的程序(和unix下的C-c类似)

C-c C-d 发送EOF

C-c C-o 清除最后一个命令的输出

C-c C-z 挂起正在运行的命令

C-c C-u 移除前一行

M-p 显示前一条命令

Text

只能在text模式里使用

M-s 使当前行居中

M-S 使当前段落居中

M-x center-region 使被选中的区域居中

宏命令(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 载入宏

编程(Programming)

M C- 自动缩进光标和标记间的区域

M-m 移动光标到行首第一个(非空格)字符

M-^ 将当前行接到上一行末尾处

M-; 添加缩进并格式化的注释

C, C++和Java模式

M-a 移动光标到声明的开始处

M-e 移动光标到声明的结尾处

M C-a 移动光标到函数的开始处

M C-e 移动光标到函数的结尾处

C-c RETURN 将光标移动到函数的开始处并标记到结尾处

C-c C-q 根据缩进风格缩进整个函数

C-c C-a 切换自动换行功能

C-c C-d 一次性删除光标后的一串空格(greedy delete)

为了实现下面的一些技术, 你需要在保存源代码的目录里运行”etags

*.c *.h *.cpp”(或者源代码的其他的扩展名)

M-.(点) 搜索标签

M-x tags-search ENTER 在所有标签里搜索(使用正则表达式)

M-,(逗号) 在tags-search里跳至下一个匹配处

M-x tags-query-replace 在设置过标签的所有文件里替换文本

GDB(调试器)(大致了解)

M-x gdb 在另一个的窗格中打开gdb

版本控制(Version Control)(以后会用到现在大致了解就可以了)

C-x v d 显示当前目录下所有注册过的文件(show all registered files in this dir)

C-x v = 比较不同版本间的差异(show diff between versions)

C-x v u 移除上次提交之后的更改(remove all changes since last checkin)

C-x v ~ 在不同窗格中显示某个版本(show certain version in different window)

C-x v l 打印日志(print log)

C-x v i 标记文件等待添加版本控制(mark file for version control add)

C-x v h 给文件添加版本控制文件头(insert version control header into file)

C-x v r 获取命名过的快照(check out named snapshot)

C-x v s 创建命名的快照(create named snapshot)

C-x v a 创建gnu风格的更改日志(create changelog file in gnu-style)

文件操作:

C+x C+f

打开文件

C+x C+r

以只读的方式打开文件

C+x C+q

进行 只读/读写 模式切换

C+x C+v

切换缓冲区

C+x C+s

保存文件

C+x C+w

文件另存为

C+x i

向缓冲区中插入文件

移动操作:C+f

前进一个字符C+b

后退一个字符M+f

前进一个单词M+b

后退一个单词C+a

移动到行首C+e

移动到行尾M+a

移动到句首M+e

移动到句尾C+p

后退一行C+n

前进一行M+g g

跳到指定行C+v

向下翻页M+v

向上翻页M+<移动到缓冲区首M+>

移动到缓冲区尾C+M+f

向前匹配括号C+M+b

向后匹配括号标记/复制/剪切/粘贴:C+xh

全选C+@

标记开始M+w

复制区域到kill ring中,但不删除C+w

删除区域C+y

将kill ring 中的内容粘贴到缓冲区C+Del

剪切光标到单词结束M+Del

剪切光标到单词开始C+k

剪切光标到行结尾M+k

剪切光标到句结尾(C+d)/Del

删除光标上的字M+d

剪切光标到下一个单词结尾ctrl-S(shift+s)-Backspace

删除当前行

缓冲区操作:

C+x C+f打开/创建一个文件,并创建一个新的缓冲区

C+x C+s保存缓冲区内容到文件

C+x C+w保存缓冲区内容到其它文件

C+xk关闭当前缓冲区

C+x C+b显示缓冲区列表,可以使用方向键来选择缓冲区

C+x C+c关闭所有缓冲区,并推出emacs

M+x命令:

查找和替换:

C+s向前查找C+r向后查找按下这两个快捷键后,

M+p显示上一个搜索词,

M+n显示下一个搜索词。输入查找内容后,按C+s跳到下一个结果,

C+r跳到上一个结果。

Enter结束查找光标在当前位置,C+g取消查找光标返回原处。

2,查找单词

按C - s RET C - w 或 C - r RET C - w 来使用单词搜索。

3,查找及替换

按M - %启动查找替换,输入要被替换的词,回车,然后输入要替换的词,再回车。

被替换的词会高亮起来,这时,输入y替换并跳到下一个,输入n忽略并跳到下一个,输入q结束,输入!替换剩下的全部。

一些常用的选项:

C - g 中断查找替换过程。

^ 返回上一个替换点,按y继续下一个,如果不想替换上一个的话,用^返回到上一个,然后按 C - r 进入编辑,修改完后按C- M - c退出继续下一个。

C - l 使当前匹配显示在文档中间。

C - r 进入修改。

4,列出匹配的模式

有时候想列出匹配的全面模式,而不是在文档中浏览,这个可以使用occur这个函数。

例子:M - x occur RET Create RET

这时,emacs会新开一个窗口来列出匹配的行,用鼠标点击或把光标移到一行按回车就会跳转到那里。

执行SHELL命令

M-x shell

打开shell命令

M-!

执行shell命令(shell-command)

M-1 M-!

执行Shell命令,命令输出插入光标位置,不打开新输入窗口

M-|

针对某一特定区域执行命令(shell-command-on-region),比如 C-x h M-juuencode

窗口操作

C-x 0

关闭本窗口

C-x 1

只留下一个窗口

C-x 2

垂直均分窗口

C-x 3

水平均分窗口

C-x o

切换到别的窗口

C-x s

保存所有窗口的缓冲

C-x b

选择当前窗口的缓冲区

C-x ^

纵向扩大窗口

C-x }

横向扩大窗口

目录操作

C-x d

打开目录模式

s

按日期/文件名排序显示

v

阅读光标所在的文件

q

退出阅读的文件

d

标记为删除

x

执行标记

D

马上删除当前文件

C

拷贝当前文件

R

重命名当前文件

+

新建文件

Z

压缩文件

对光标所在的文件执行SHELL命令

g

刷新显示

i

在当前缓冲区的末尾插入子目录的内容

[n]m

标记光标所在的文件,如果指定n,则从光标所在的文件后n个文件被标记

[n]u

取消当前光标标记的文件,n的含义同上

t

反向标记文件

%-m

正则标记

q

退出目录模式

其他:

C+x u 撤销

C+x C+c 退出emacs

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新编程开发学习
    热门编程开发学习
    软件教程子分类