Linux服务器项目实训教程
上QQ阅读APP看书,第一时间看更新

任务2 Emacs的高级功能

Emacs功能实在太多,所以这里只介绍最实用的几样。

1)快速移动光标

前进用英语说是Forward,所以“C”-“f”的作用跟右方向键一样,使得光标向右移动一格。有时候我们不愿意一个一个字符去移动,需要一个单词一个单词的移动,这个时候,可以将“Ctrl”换成“Alt”,即“M”-“f”,向前移动一个单词。也就是说,“Ctrl”开头的是按照字符为单位,“Alt”开头的是按照词为单位。同理,后退用英语说是“Back”,所以“C”-“b”是向后一格,“M”-“b”是向后退一个单词。

我们有时需要一个句子一个句子移动,一个段落一个段落移动。前面介绍了,“C”-“a”是移动到一行的开头,“C”-“e”是移动到一行的末尾。一行和一句类似。所以,“M”-“a”是移动到一个句子的开头,“M”-“e”是移动到句子的末尾。为什么要用“a”和“e”呢?因为它们分别是Ahead和End的首字母。

至于段落间移动,则需要“Ctrl”和“Alt”一起按:移动到上一个段落是“C”-“M”-“[”,下一个则是“C”-“M”-“]”。

上移和下移光标,和上下方向键的作用一样:“C”-“p”上移一行,“C”-“n”下移一行。

还有快速调到文档的最开头:“M”-“<”,文档末尾:“M”-“>”。这个尖括号需要使用“shift”键配合:同时按住“Alt”和“Shift”,再按下逗号或者句号。

2)高效的查找

还在为寻找配置文件中的一个关键字而反复查找吗?有了Emacs,可以马上找到。还记得前面讲的需要跳到第98行进行编辑的那个例子吗?现在可以试试这样:

在打开文档后,确保光标处于前98行(如果不是,可以用“M”-“<”回到文档开头),然后按“C”-“s”,于是在mini buff处出现了“I-search:”的字样。此时,可以慢慢输入“root”这四个字母,一开始只输入一个“r”的时候,屏幕上出现了很多背景变成绿色的匹配项,随着不断输入,符合条件的项目越来越少,直到全部输入完后,屏幕上只剩下了两个符合条件的项目,如图2-6所示。

图2-6 Emacs高级查找功能

如果我们还没找到需要的,可以不停地按“C”-“s”,这样光标会一直向下,在匹配项上跳转,直到按下回车键,退出查找,进入正常的编辑状态。

这个例子中,我们还需要输入一个TAB制表符,也就是再按一下“Tab”键。此时光标马上跳转到了98行,如图2-7所示:

图2-7 Emacs高级查找定位

此时我们可以按一下回车键,退出搜索状态,就可以开始正常的编辑了。光标会停留在搜索到的匹配项上。如果想取消搜索,可以按“C”-“g”,光标会回到开始使用搜索的地方。这也是中断Emacs大部分命令的方法。

如果一直按“C”-“s”到文件末尾了,又会重新从头开始。另外,向上搜索的快捷键是“C”-“r”。

或许有人还听说过正则表达式吧。正则表达式搜索拥有更加强大的威力。Linux下的配置文件一般是以“#”开头的作为注释,这些注释完全可以去掉,因为太多的注释会扰乱我们的注意。但手动查找删除实在是麻烦,此时我们可以用正则表达式查找所有以“#”或者“;”开头的行,然后用“C”-“k”删除。

正则查找与普通查找类似,只不过正则查找需要多按一个“Alt”键,即“C”-“M”-“s”和“C”-“M”-“r”。此时mini buff处会出现:Regexp,就是正则表达式的意思。如图2-8所示。

图2-8 Emacs正则表达式运用

搜索以“#”开头的最简单的正则表达式是这么写的:

    ^#

^代表一行的开头,中括号里面的字符表示任何一个都可以匹配。

更多正则表达式的内容,这里就不介绍了。大部分时候,宏会用到正则查找。

3)宏

宏用来执行一系列有规律的而且重复的任务。比如上面讲的去除所有注释。我们可以利用写好的正则表达式来实际演示一下如何使用宏。

我们还是打开sudoers,然后按“M”-“<”跳转到文档最开始。接着,按下“F3”,mini buff上的显示如图2-9所示。

图2-9 Emacs宏运用

“Defining kbd macro…”的意思就是正在定义键盘宏中。下面的操作请务必一次性完成,要是失误了,按“C”-“g”取消宏定义,从头开始。依次键入:

    C-M-s^#

按下回车键,此时光标移动到了“#”的后面,需要移动到开头,使用“C”-“a”,然后按“C”-“k”两下,删除一整行。按下“F4”,mini buff上的显示如图2-10所示。Keyboard macro defined,意思就是键盘宏已经定义好了。

图2-10 Emacs宏定义

接着,我们就可以不停地按“F4”来调用这个宏,也就是反复执行如上文所述按下“F3”至“F4”之间所执行的一系列操作,Emacs会按照顺序自动执行,我们要做的就是等待最后的结果。

如果配置文件的行数有点多,我们不停地按“F4”也会厌烦的。我们前面提到的,快速跳转到98行时,可以用“C”-“u”后加数字的方法指定数量,在这里也可以用到:

    C-u 100 f4

这样就等于我们按了“F4”100下。可以按照我们的需要设定次数。现在sudoers的配置文件的实际内容就出来了,看起来是不是一目了然了?

4)更加丰富的配置

Emacs的配置实在是太丰富了。所以为了节约时间,我们可以借鉴其他人写好的配置文件。这里介绍使用git来复制一个配置好的Emacs配置文件。在终端执行:

    cd
    rm-fr . emacs. d
    git clone https://github.com/latentlong/. emacs. d. git

第三行代码将会复制一个目录至家目录,这个目录中有个init.el的文件,也是Emacs启动时默认会加载的文件。