学习Emacs系列教程(三):编辑(1)

时间:2022-08-31 23:41:34
学习Emacs系列教程(一) :基本使用  
学习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 从光标起删除当前行。
  一个比较详细的例子见下图:(宽线覆盖的文字就是使用箭头指向的命令删除的部分,注意中英文的区别)
学习Emacs系列教程(三):编辑(1)

四、撤销命令
  操作难免有失误之处,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
重复前个命令

学习Emacs系列教程(三):编辑(1) 未完待续。。。