欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

emacs常用快捷键 emacs快捷键大全

程序员文章站 2023-11-27 08:36:40
emacs常用快捷键 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

相关标签: emacs 快捷键