学习Emacs系列教程(二) :导航
上回说到怎么在Emacs中移动光标,这回将介绍如何在Emacs中编辑文本。
任何一款文本编辑软件的核心功能当然就是编辑文本,Emacs也不例外,虽然它也有许多其它强大的本领,但都离不开文本编辑。闹,文本编辑说白了也就是打字,专业点说我们需要实现一种所见即所得输入方式。在Emacs中打字和Notepad中没什么区别,一样也是打开一个文件直接往里面敲字符就可以了,中文也行。这个和Vim区别比较大,我们还需要知道自己是在哪个模式下,不然乱敲一气也不见屏幕有什么反应。
一、文件操作
刚才我们说到编辑文本就是打开一个文件往里面敲字符,所以我们第一件事就是打开一个文件。
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标准中字符的名字或者编码就可以输出这个乱七八糟的东西了。这我相信不会有谁闲的无聊来记这种一长串数字的,而且我们有更为先进的方案,(广告时间)当。。当。。当。。,现在隆重推出Unicode字符超级输入工具——搜狗软键盘,省去了你记忆一大堆16进制数的烦恼,还能输入中文,实在是居家旅行必备良品。
三、删除文本
相比输入,Emacs删除文本的花样就比较多了。
Backspace,退格键,这个比较传统就不说了。
Del键,删除光标处的字符,虽然这个也很常见,但它违背了Emacs的原则,“你的手不用离开主键盘区”,所以我们用 C-d 来代替。
M-d ,这个用来删除一个单词(记住在中文中单词表示两个相邻标点符号中的句子,所以如果你是打中文这个键还是少用,稍不留神多长一截句子就不见了)。而且它删除的是从光标当前位置到单词结束,还会把单词前半截留给你。
相对应,删除单词前半截可以用, M-Backspace。
M-k , 删除一段句子,这个在中英文有些不同。中文里面它只会删除到句号为止,包括句号。而英文中,它不认'.', '!‘,这些东西,而是把整段都删了(英文的分段用两个回车表示)。和M-d一样,它也是从光标处开始删。对应删回去是 C-x Backspace。
C-k , 从光标起删除当前行。
一个比较详细的例子见下图:(宽线覆盖的文字就是使用箭头指向的命令删除的部分,注意中英文的区别)
四、撤销命令
操作难免有失误之处,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的帮助。
空白行:
插入空行, 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 |
重复前个命令 |
未完待续。。。