- 1 -
目录
工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录
Edit By ZHLH
2011-7-26
第一节、Emacs 初识 .................................................................................................................................... - 3 -
一、Emacs 的安装使用......................................................................................................................... - 3 -
二、Emacs 按键..................................................................................................................................... - 4 -
三、进入退出 Emacs............................................................................................................................. - 4 -
第二节、Emacs 中的导航 ............................................................................................................................ - 5 -
一、基本导航........................................................................................................................................ - 5 -
二、中级导航........................................................................................................................................ - 5 -
三、高级导航........................................................................................................................................ - 6 -
四、小节快捷键总结 ............................................................................................................................ - 7 -
第三节、Emacs 中的编辑操作---基础篇..................................................................................................... - 8 -
一、文件操作........................................................................................................................................ - 8 -
二、输入文本........................................................................................................................................ - 8 -
三、删除文本........................................................................................................................................ - 8 -
四、撤销命令........................................................................................................................................ - 9 -
五、一些杂项命令................................................................................................................................ - 9 -
六、小节快捷键总结 .......................................................................................................................... - 10 -
第四节、Emacs 中的标记---操作提高篇....................................................................................................- 11 -
一、标记和区域...................................................................................................................................- 11 -
二、标记环...........................................................................................................................................- 11 -
三、非持久性标记模式 ...................................................................................................................... - 12 -
四、小节快捷键总结 .......................................................................................................................... - 12 -
第五节、Emacs 中文本编辑---综合篇....................................................................................................... - 13 -
一、Killing........................................................................................................................................ - 13 -
二、Yanking........................................................................................................................................ - 14 -
三、快速复制...................................................................................................................................... - 14 -
四、CUA 绑定....................................................................................................................................... - 15 -
五、小节快捷键总结 .......................................................................................................................... - 15 -
第六节、认识 Minibuffer............................................................................................................................ - 17 -
一、初识 Minibuffer......................................................................................................................... - 17 -
二、在 Minibuffer 中编辑................................................................................................................ - 17 -
三、自动补全...................................................................................................................................... - 17 -
四、Minibuffer 历史........................................................................................................................ - 19 -
五、小节快捷键总结 .......................................................................................................................... - 20 -
第七节、Emacs 中的剪切板 ...................................................................................................................... - 21 -
一、复制到剪切板.............................................................................................................................. - 21 -
二、从剪切板中提取.......................................................................................................................... - 21 -
三、小节快捷键总结 .......................................................................................................................... - 21 -
第八节、Emacs 中的查找操作 .................................................................................................................. - 22 -
一、增量查找...................................................................................................................................... - 22 -
二、简单查找...................................................................................................................................... - 23 -
三、词组查找...................................................................................................................................... - 23 -
四、正则查找...................................................................................................................................... - 24 -
- 2 -
五、替换.............................................................................................................................................. - 24 -
六、小节快捷键总结 .......................................................................................................................... - 25 -
第九节、Emacs 中的缓冲管理 .................................................................................................................. - 27 -
一、操作缓冲...................................................................................................................................... - 27 -
二、Buffer Menu................................................................................................................................ - 28 -
三、间接缓冲...................................................................................................................................... - 28 -
四、小节快捷键总结 .......................................................................................................................... - 29 -
第十节、Emacs 中的窗口管理 .................................................................................................................. - 30 -
一、显示窗口...................................................................................................................................... - 30 -
二、重排窗口...................................................................................................................................... - 30 -
三、小节快捷键总结 .......................................................................................................................... - 31 -
- 3 -
第一节、Emacs 初识
一、Emacs 的安装使用
学习软件的第一件事当然是把它下下
来, http://ftp.gnu.org/pub/gnu/emacs/windows/emacs-23.1-bin-i386.zip 目前最新版 23.1,这个版本号
够吓人的,Opera 的 10.0还不及别人的一半。本人不幸,使用的是 Windows 版本。
安装过程异常简单,直接解压就行,但路径中不能包含空格,所以就
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
往 Program Files 文件夹下面丢了,我是
直接放在根目录的,找起来也方便。运行 bin 目录下的 addpm.exe 可以添加开始菜单快捷方式。也可以直接运行
runemacs.exe 来启动 Emacs。
卸载也很方便,Emacs 不会对系统写任何垃圾东东,直接删除文件夹即可卸载,还有你的快捷方式。
启动 Emacs 后的界面如下:
猛的一看,没什么太出彩的地方,感觉比较简陋。上面依次是标题栏、菜单栏、工具栏,中间一大块就是编辑文
本的地方,下面两行是 mode line 和 echo area。
echo area 是你输入命令和显示消息的地方。
在 mode line 中第一个字符表示字符集,c 代表 chinese-gbk,后面那个 \ 符号表示换行类型,\是指 DOS 的
CRLF 换行,另外还有 Unix 的 LF 换行和 Mac 的 CR 换行。然后一个字符,表示打开的文件是否可写(先称为文件便
于理解,实际上是 buffer),%表示只读,- 和 * 表示可写。再一个字符表示文件是否已写,% 或 - 表示还没动,
*表示已经更改。这两个字符组合起来有四个状态。
符号 表示
%% 只读,未更改
-- 可写,未更改
- 4 -
** 可写,已更改
%* 只读,已更改
再后面一个 - 表示路径,后面黑体的 *GNU Emacs* 表示 buffer 的名称。后面的 All 表示光标的位置,当文件
在一页就能显示完的时,这里是 All,此外还有 Top, Bot,以及当前位置百分比。L5 表示第五行。Fundamental 是
模式名,模式种类很多,这个以后介绍。
如果是第一次使用,点击 Emacs Tutorial,里面也有 Emacs 的一些基本介绍,而且是中文。
二、Emacs 按键
Vim 把控制和编辑分成了两个模式,单独操作,互不影响。而 Emacs 是同时进行编辑和控制,只不过控制命令需
要使用控制键。
Emacs 的控制键就三个 Control,Shift 和 Meta,Control 和 Shift 键盘上都有,Meta 在美式键盘中就是
Alt,在苹果键盘上是那个很花的四个圈的键,如果键盘上没有 Alt (这个要某些欧洲人才会遇到)可以使用 Esc 代替,
另外 Esc 不想 Alt 通常当组合键用,它要单独按一下,再按另外的。
以后控制命令就这样表示:
C-f Ctrl+f
C-M-f Ctrl+Alt+f
C-_ Ctrl+Shift+-
Emacs 中,这些组合键其实是一些函数的快捷方式,比如 C-n 是 next-line 的快捷方式。我们除了使用组合键意
外,还可以直接调用函数。
按下 M-x,然后输入函数名就可以调用函数了。
三、进入退出 Emacs
进入前面已经说了,现在说怎么退出。
最直接的办法,点右上角的叉,当然这个没什么技术含量。
比较文明的方法,C-x C-c ,如果当前文件已经修改会问你是否保存。
野蛮点的方法,调用函数 kill-emacs,即M-x kill-emacs,直接退出,不管是否修改。
不过直接退出后,Emacs 会在相同目录下保留一个以#号开头结尾的相同文件名文件,下次启动可以使用 M-x
recover-file 来恢复。如果是多次保存后,还会有个以~结尾的文件,保存了上次信息。
- 5 -
第二节、Emacs 中的导航
一、基本导航
看下面这张图片:
可以这么记,p-previous,n-next,b-backward,f-forward。这里所说的字符对于 E 文,就是一
个字母,而中文是一个汉字,其实 Emacs 对中文支持还是很厚道的,后面慢慢可以看出来。不过在这儿我
个人感觉这个光标移动没有 Vim 方便,别人就 HJKL,一个键就能动了,这需要两个,Ctrl 有时还觉得按
着很别扭,不太和谐呀。
在按 C-n 时,如果越过了页尾,不像一般 Windows 编辑器是往下滚一行,而是往下滚半夜,当前光
标会置于页面中间。C-p 也是一样的。
另外两个使用较多的是 C-v 往下翻页,M-v 往上翻页。呃,还有一个 C-l 就是把当前行提到页面中间,
感觉 Emacs 对页面中似乎情有独钟啊。
二、中级导航
按字符移的上节说了,然后说按单词移动:
M-f 向前移动一个单词,Emacs 理解的中文单词是两个标点符号之间的东西,所以中文就是移到下一
个标点符号的位置。往回是 M-b ,向后移动一个单词。
C-a 移动到行首,C-e 移动到行尾。
M-a 移动到句首,M-e 移动到句尾,在中文中一般就是跑到句号的位置,这里我不得不说一下,现在
很多年轻人写文章有一逗到底的习惯,就只在文章最后加个句号,如果用 Emacs 来看你的文章,一个 M-e
啥都不用干了。作为一个有一定文学素养的人,在此我严厉反对这种写文章的作风,不和谐。
M-} 移动到下一段, M-{ 移动到上一段。
还有两个跑的更快的导航,M-< 移到文档首,这里要注意是小于符号<,不是逗号, ,所以我们是按
Alt + Shift + , 切记。移到文档尾是 M->。
C-x [ 和 C-x ] ,分别是往上一页和往下一页。这里页是由分页符控制的,在 Emacs Tutorial 中是没
有分页符的,所有这两个键会跑到文档头和文档尾去。
例图:
- 6 -
阴影处是当前光标的位置,其它箭头所指是按相应键后光标的位置。
三、高级导航
可以这么来看基本导航是普通人用的,中级导航是高手采用的,高级导航是砖家、叫兽用的。
M-r 移动到页面中间行首位置,holly shit,又是页面中间,真 XX 阴魂不散。
M-x goto-char (n),这个比较复杂,先按 M-x,然后空格输 goto-char 回车,另外 Emacs 有 Tab
键补全功能,大家可以试试,如果有多个选项会有提示,最后输入一个整数。这个东西会移动到从头数第 n
个字符的位置,我估计不会有人变态到能记住每个字是第几个字符。
M-g M-g [n],按两次 M-g,不用回车,提示输入一个数字,移动到指定行 n,两个 M-g,也可以输
M-g g 。
还有一个比较罕见的,C-x C-n, 这个是设置当前列为目标列。这是什么意思呢,本来我们按 C-n 和
C-p 时,光标会往下或往上移一行,而列的位置就是当前光标列的位置,除非下一行列没那么多(就是字
符没那么多),光标会到距当前列最近的列。而我们可以用这个组合键重新设一个目标列,这样在按 C-n 和
C-p 时,光标会跑到我们设的目标列上。如果你不幸按了,而且又不习惯,可以使用 C-u C-x C-n 来取消
目标列设置。补充一点,这两个命令都是禁用命令,是 Emacs 考虑大家多半不会用,而且比较怪的命令,
所以通常就禁用了,你不小心调出时会给出提示问你是否需要继续。就像这个样子:
- 7 -
大家按个空格稍微试下就行了。
最后还有两个重复命令:
M-n, n 是数字,意思是重复下个命令 n 次,比如 M-3 C-f,就是向前移三个字符。
C-u n,n 还是数字,也是重复下个命令 n 次。 如果省略 n,就是 4 次。按两次 C-u,就是重复 16
次。
四、小节快捷键总结
按键 命令 作用
C-f forward-char 向前一个字符
C-b backward-char 向后一个字符
C-p previous-line 上移一行
C-n next-line 下移一行
M-f forward-word 向前一个单词
M-b backward-word 向后一个单词
C-a beginning-of-line 移到行首
C-e end-of-line 移到行尾
M-e forward-sentence 移到句首
M-a backward-sentence 移到句尾
M-} forward-paragraph 下移一段
M-{ backward-paragraph 上移一段
C-v scroll-up 下移一屏
M-v scroll-down 上移一屏
C-x ] forward-page 下移一页
C-x [ backward-page 上移一页
M-< beginning-of-buffer 移到文档头
M-> end-of-buffer 移到文档尾
M-g g n goto-line 移到第 n 行
(none) goto-char 移到第 n 个字符
C-l recenter 将当前位置放到页面中间(Emacs 最喜欢的地方)
M-n digit-argument 重复下个命令 n 次
C-u n universal-argument 重复下个命令 n 次,n 默认为 4
注:这里命令这列就是按了 M-x 后输的东东。
- 8 -
第三节、Emacs 中的编辑操作---基础篇
一、文件操作
刚才我们说到编辑文本就是打开一个文件往里面敲字符,所以我们第一件事就是打开一个文件。
C-x C-f 输入这个命令后在回显区会看到一个提示“Find file: ”,然后是我的文档的路径,这时需要输
入你编辑的文件的名称。注意,这里的输入的文件名可以包含路径,比如 D:\text.txt,或者是相对路径。
还有就是在 Windows 中我们可以使用 Windows 风格的反斜杠"\",当然了也可以使用正斜杠"/"。如果输
入了一个新的路径,Emacs 的当前路径会跳转到你输入的地方,(实际上是新开了一个 buffer)。如果
Emacs 没找到你输入的文件,它会以你输入的名字自动新建一个文件。另外 Emacs 还支持拖拽,就是说
可以把文件图标拖到 Emacs 中来打开它。
当你不小心错打开一个文件时,可以使用 C-x C-v 来换一个,操作和 C-x C-f 一样,这个区别嘛是
Emacs 在 buffer 中处理有些不同。
C-x C-s 这个命令是用来保存文件的,另存是 C-x C-w ,这两个都比较简单,一看就会。
二、输入文本
除了一些基本的输入方式,Emacs 还可以输入非打印字符,就是 ASCII 表中前面的那些字符。
使用 C-q (n), 这里的 n 代表一个八进制数,就能打出 n 对应的 ASCII 表中的符号。
还有就是 Unicode 字符比如日文啊韩文啊,使用 C-x 8 后面接 Unicode
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
中字符的名字或者编码
就可以输出这个乱七八糟的东西了。这我相信不会有谁闲的无聊来记这种一长串数字的,而且我们有更为
先进的
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
,(广告时间)当。。当。。当。。,现在隆重推出 Unicode 字符超级输入工具——搜狗软键
盘,省去了你记忆一大堆 16 进制数的烦恼,还能输入中文,实在是居家旅行必备良品。
三、删除文本
相比输入,Emacs 删除文本的花样就比较多了。
Backspace,退格键,这个比较传统就不说了。
Del 键,删除光标处的字符,虽然这个也很常见,但它违背了 Emacs 的原则,“你的手不用离开主键
盘区”,所以我们用 C-d 来代替。
M-d ,这个用来删除一个单词(记住在中文中单词表示两个相邻标点符号中的句子,所以如果你是打
中文这个键还是少用,稍不留神多长一截句子就不见了)。而且它删除的是从光标当前位置到单词结束,
还会把单词前半截留给你。
相对应,删除单词前半截可以用,M-Backspace。
M-k, 删除一段句子,这个在中英文有些不同。中文里面它只会删除到句号为止,包括句号。而英文
中,它不认'.', '!‘,这些东西,而是把整段都删了(英文的分段用两个回车表示)。和 M-d 一样,它也是从
光标处开始删。对应删回去是 C-x Backspace。
C-k, 从光标起删除当前行。
一个比较详细的例子见下图:(宽线覆盖的文字就是使用箭头指向的命令删除的部分,注意中英文的
区别)
- 9 -
四、撤销命令
操作难免有失误之处,Windows 里面 Ctrl + z 命令使用频率也是蛮高的,不过在 Emacs 中按 Ctrl +
z 会发现窗口最小化了。Emacs 中要达到撤销效果使用的是 C-/ ,同样还可以使用 C-_ 或者 C-x u ,这
三个都对应的是 Undo 命令。
和 Vim 类似,Emacs 中删除的
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
也保存在一个缓冲中,相当于一个剪贴板,我们可以很方便的调
出某一次放进去的东西,这个地方我还没仔细看,放到以后再讲。
上面说的是撤销文本上的操作,还有个比较常用的命令 C-g ,这个是用来撤销命令的,当你输了一半
命令发现不对就可以用它了。
五、一些杂项命令
有些比较零碎的命令又比较常用,呃,其实应该放到第一章的,先搁在这儿吧。
帮助命令:
C-h t 调出 Emacs Tutorial。
C-h r 调出 Emacs Manual。
C-h k (command) ,调出对应 command 的帮助,比如 C-h k C-n 就是查看 C-n 的帮助。
空白行:
- 10 -
插入空行,C-o 。删除空行 C-x C-o ,注意,如果有许多空行时,这个命令会删的只剩一个空行,只
有一个就直接删了。这两个命令并不是完全对应,插入空行实际是插入一个回车换行符,而删除空行的标
准是这一行什么文字都没有才删了,如果我们在一行文字中间按 C-o,光标后面的内容会移到下一行,再
按 C-x C-o 却没有反应,因为这行前面还有内容。
重复命令:
上章介绍两个数字参数的重复命令,这儿还有一个不带数字参数的。C-x z ,这个命令的对象是它前面
输的命令,比如,先按 C-n ,再按 C-x z,就会重复一次 C-n,然后我们每按一次 z, 就再往下走一行,
相当方便。
六、小节快捷键总结
按键 命令 作用
C-x C-f find-file 打开文件
C-x C-v find-alternate-file 打开另一个文件
C-x C-s save-buffer 保存文件
C-x C-w write-file 另存文件
C-q (n) quoted-insert 插入字符,n 表示字符的八进制 ASCII 码
C-x 8 ucs-insert 插入 Unicode 字符
C-d delete-char 删除光标处字符
Backspace delete-backward-char 删除光标前字符
M-d kill-word 删除光标起单词
M-Backspace backward-kill-word 删除光标前单词
C-k kill-line 删除光标起当前行
M-k kill-sentence 删除光标起句子
C-x Backspace backward-kill-sentence 删除光标前句子
(none) kill-paragraph 删除光标起段落
(none) backward-kill-paragraph 删除光标前段落
C-/ undo 撤销
C-_ undo 撤销
C-x u undo 撤销
C-g keyboard-quit 撤销命令
C-h t help-with-tutorial 调出 Emacs Tutorial
C-h r info-emacs-manual 调出 Emacs Manual
C-h k (command) describe-key 查看对应 command 帮助
C-o open-line 插入空行
C-x C-o delete-blank-line 删除空行
C-x z repeat 重复前个命令
- 11 -
第四节、Emacs 中的标记---操作提高篇
一、标记和区域
所谓区域(region)就是平时我们使用鼠标选中的一段文字,在 emacs 中用样可以使用鼠标来选择一段
文字表示区域,如果使用键盘操作的话需要用一个术语叫标记(mark),也就是一个基准点,或者说是区域
的起点,使用命令 C-SPC 用来设定标记,不幸的是这个组合键通常情况是被输入法给截获了,我们得使用
C-@来代替,要多按个 Shift,操作起来感觉有点别扭。OK,在设定好标记后我们可以让光标移动到任何
想去的地方,在光标和标记之间就是选定的区域,emacs 里面会高亮显示这个区域,参见下图,注意,这
个区域是动态存在的,只要光标位置变了,区域也随着变化,只是其起点永远是那个标记。
这个时候就可以对选中的区域进行操作了,比如说 C-w (kill-region) 删除选中的区域,或者 C-x
C-u 将所选区域字母改成大写字母,这是个禁用命令需要确认后才能生效。还有个常用的操作是 C-x
C-x (exchange-point-and-mark),交换光标和标记,就是说把区域的起点改在光标所在处。取消标记
和区域直接使用 C-g 就可以了。
除了这种手工选择区域之外,emacs 还内置了一些快捷的选取方式。像常用的全选就是 C-x h ,全选
后标记在文档的最后,而光标在文档的最前面。C-x C-p 选择整页,页是由分页符界定的。选取一段使用
M-h 。M-@ 从当前位置选到单词尾(中文里的单词是两个标点符号间的文字),重复按这个命令会一直往
后选取单词。这四个命令有个共同的特点就是选取的区域标记在最后,光标在最前,这个和常规理解有些
区别,记住就是了。
在 Emacs 23 之后还有个新特性叫 shift 选择(shift selection),故名思意就是用 shift 键来快速选
择区域,通过使用 shift 键和 C-n, C-p 之类的组合来选择区域,和常规选择有些区别的是,在 shift 选择
过程中使用了任何非 shift 组合都会取消当前选择区域。
二、标记环
标记的一个主要功能是界定区域,此外还有个作用就是记忆一个点供今后使用,在一个 buffer 里面可
以用标记记忆 16 个点,称为“标记环”,标记环实际是个先进先出的队列。
我们使用命令 C-@ C-@ 把一个标记加入标记环,这个命令做了两件事,第一次按 C-@时标记了一个
点(此时已经加入标记环了),第二次按 C-@时取消了当前标记的激活状态,我们可以在 minibuffer 中
看到提示 Mark deactivated。而命令 C-u C-@ 来选择上一个加入标记环的标记,如果选中的标记处于激
活状态,它会取消其激活。使用 C-u C-@不会删除标记,仅是在标记环中不停的向前跳跃,注意这里我们
只可能在当前 buffer 中的标记间跳跃,不会跑到其它的 buffer 里面去。
如果修改变量 set-mark-command-repeat-pop 为 non-nil,在按下 C-u C-@后,我们可以就使
用 C-@在标记环中跳跃了。
变量 mark-ring-max 表示了一个 buffer 中标记环中的最大标记数,默认为 16。
Administrator
高亮
- 12 -
还有变量 mark-even-if-nonactive 和标记环相关,当其为 nil 时,表示只能使用激活状态的标记,
默认为 non-nil 。
另外在 emacs 中还存在一个全局标记环,C-@ C-@在把标记加入当前 buffer 标记环同时,也把标记
加入了全局标记环,我们可以用命令 C-x C-@ (pop-global-mark)在全局标记环中选择。
三、非持久性标记模式
这个东西这里只是稍微提及一下,平时用到的地方很少,所谓非持久性标记就是指我们在选择了一个
区域后,任何修改该区域的操作都会改变区域的激活状态。而我们可以将非持久性标记模式关闭,这样选
择的区域永远处于激活状态,命令是 transient-mark-mode ,这是个切换变量只有开启和关闭两个状态,
我们每次使用 M-x transient-mark-mode 命令都会将其值从一个切换到另一个。关闭该模式后最显著的
特点是选择区域时没有高亮(不过使用鼠标选择和 shift 选择高亮还是有的)。令人头疼的也是这个特点,
我们根本不知道自己选择了哪些地方。
我们会使用这个东西只有一种情况,某些命令在关闭非持久性标记模式时,其作用有少许差异,不过
基本上这些差异很少去关注,所以这段大家看看就行。
四、小节快捷键总结
按键 命令 作用
C-@ set-mark-command 设定标记
C-x C-x exchange-point-and-mark 交换标记和光标位置
C-w kill-region 删除区域中内容
C-x C-u upcase-region 将区域中字母改为大写
C-x h mark-whole-buffer 全选
C-x C-p mark-page 选取一页
M-h mark-paragraph 选取一段
M-@ mark-word 选取一个单词
C-@ C-@ 加入点到标记环
C-u C-@ 在标记环中跳跃
C-x C-@ pop-global-mark 在全局标记环中跳跃
(none) transient-mark-mode 非持久化标记模式
变量 作用
set-mark-command-repeat-pop 是否使用 C-@连续跳跃
mark-ring-max 标记环最大容量
mark-even-if-nonactive 是否只使用激活状态标记
- 13 -
第五节、Emacs 中文本编辑---综合篇
一、Killing
Killing 就是指删除指定的一段内容并将其放入 kill 环中,kill 环和上章所介绍的标记环差不多也是一
个先进先出的队列,我们还可以理解为 Windows 里的粘贴板。在 Emacs 中删除命令分为两大类,一类称
为 kill 命令,这种命令删除的文本会放入 kill 环中,比如 kill-line,kill-word 命令,非常好认。kill 命令
相对比较安全,我们删除的内容都可以找回来。另一类删除命令称为 delete 命令,就是说它们删掉的内容
是不会放入 kill 环中的,比如说 delete-char 这样子的。虽然 delete 命令删除的内容不放入 kill 环,但
实际上这两种方式删掉的文本我们都可以用 undo 命令(C-/,C-_)找回来。
有些时候我们打开的文档是只读属性的不允许修改,不过我们可能会想复制点内容,但直接使用 kill
命令是不行的,有两个解决办法,一是使用命令 M-w (kill-ring-save),这个需要首先标记好一个区域再
使用,其实这个命令就是 Copy 命令,仅将选中内容放入 kill 环而不删除。另一个办法是修改变量
kill-read-only-ok 为 non-nil,这样就可以直接使用 kill 命令了,在使用时 minibuffer 中会有提示。两
个办法各有所长,第一个不用改变量选择范围相对灵活,第二个快捷操作更多,大家根据需要选择。
下面分类列出 delete 命令和 kill 命令,有些在第三章已经介绍过了,这里再提一下:
C-d (delete-char),删除光标处的字符。
Backspace (delete-backward-char),删除光标前字符。
M-\ (delete-horizontal-space),删除光标处的所有空格和 Tab 字符。
M-SPC (just-one-space),删除光标处的所有空格和 Tab 字符,但留下一个。
C-x C-o (delete-blank-lines),删除光标周围的空白行,保留当前行。
M-^ (delete-indentation),将两行合为一行,删除之间的空白和缩进。参见下面两图。
使用 M-^之前
使用 M-^之后
这里我们可以看出 delete 命令基本上只能删个把字符,或者一些空白字符,干不了什么大事,也避免
了意外删掉大段内容而找不会来。接着我们整理下 kill 命令:
C-k (kill-line),从光标处起删除该行。
C-S-Backspace (kill-whole-line),删除整行。
C-w (kill-region),删除区域。
- 14 -
M-w (kill-ring-save),复制到 kill 环,而不删除。
M-d (kill-word),删除光标起一个单词。
M-Backspace (backward-kill-word),删除光标前单词。
C-x Backspace (backward-kill-sentence),往前删一句。
M-k (kill-sentence),删除光标起一句。
M-z char (zap-to-char),删至字符 char 为止。
二、Yanking
前面讲了怎么把文本放入 kill 环中,下面接着介绍如何把这些内容拿出来。这里面最常用的便是
C-y (yank) 命令,也就是粘贴命令。将光标移到文本中的任何一处使用此命令便可把最近一次放入 kill 环
中的内容提取出来,其实除了 kill 环里的,如果你在任何其它窗口程序中使用了复制命令,紧接着在 Emacs
里使用 C-y,都可以把系统粘贴板中的内容调出。C-y 在调出内容后还把使用该命令的点加入了标记环,我
们可以很方便的使用 C-x C-x 找到是哪个位置插入的文本。
召回的另一个命令是 M-y (yank-pop),这个命令只能在刚用完 C-y 后使用。它的作用是用 kill 环中
再前一个内容替换掉刚用 C-y 粘贴出来的内容。简单点说,假如 kill 环中有 1 号、2 号、3 号记录,使用
C-y 后 3 号记录调出,紧接着使用 M-y,删掉 3 号记录,换成 2 号记录,还有 M-y 是可以连着多次使用的,
我们再按一下 1 号记录就出来了。虽然这个命令可以使用前一条记录替换此条记录,但它并不会更改 kill 环
中记录的顺序,仅是一个指针的移动而已。另外 M-y 命令可以接受参数调用,比如说 C-u 2 M-y 就等价
于 C-y M-y。
还有一个是 C-M-w (append-next-kill),这个命令只有在它下一个命令是 kill 命令时才有效,作用
是把下个 kill 命令删掉的东西和 kill 环中最后一个记录合并。
说了这么多关于 kill 和 yank 的内容,其实最重要的一点还是 kill 环,即存放删掉东西的地方。Emacs
维持的是一个全局 kill 环,所有打开的 buffer 都可以使用。在 kill 环中默认是保存前面 60 个删除的内容,
可以使用变量 kill-ring-max 来修改这个值。而 kill 环中的内容是保存在 kill-ring 这个变量中的,命令
C-h v kill-ring 可以查看我们之前删了些什么东西。
正常情况来说,每次使用 kill 命令都会在 kill 环中新建一个记录来保存这次删除的东西,不过如果我
们连续使用 kill 命令,这一系列命令所删除的内容只会保存在一个记录中。比如我们有下面一段文本:
I have nothing◇to say. Good