考虑以下代码
函数 A_Very_Long_Function_Name() 重复输入会非常令人恼火。在插入模式下,可以通过向前或向后搜索来自动补全单词。在函数 Another_Function() 中,可以输入 A_Very... 然后按下 CTRL-P。第一个匹配的单词将首先显示。在本例中,它将是 A_Very_Long_Variable_Name。要正确补全,可以再次按下 CTRL-P,搜索将继续向上查找下一个匹配的单词,即 A_Very_Long_Function_Name。一旦匹配到正确的单词,您就可以继续输入。在整个过程中,VIM 始终保持在插入模式。
与 CTRL-P 类似的是按键 CTRL-N。它向前搜索而不是向后搜索。这两个按键都会持续搜索直到到达顶部或底部。
CTRL-P 和 CTRL-N 都是称为 CTRL-X 模式的一部分。CTRL-X 模式是插入模式的子模式。因此,当您处于插入模式时,可以进入此模式。要离开 CTRL-X 模式,您可以按除 CTRL-X、CTRL-P 和 CTRL-N 之外的任何按键。一旦离开 CTRL-X 模式,您将返回到插入模式。
CTRL-X 模式允许您以多种方式进行自动补全。甚至可以自动补全文件名。当您必须包含头文件时,这尤其有用。使用 CTRL-X 模式,您可以使用以下机制包含文件 foo.h。
#include "f CTRL-X CTRL-F" |
那是 CTRL-X CTRL-F。我知道... 我知道... 这听起来像 emacs ;-)。您可以在 CTRL-X 模式下执行其他操作。其中之一是字典补全。字典补全允许您指定一个文件,其中包含用于补全的单词列表。默认情况下,字典选项未设置。此选项通过命令 :set dictionary=file 设置。通常,可以将 C 关键字、typedefs、#defines 放入字典文件中。C++ 和 Java 程序员可能对添加类名感兴趣。
字典文件的格式很简单。只需将您想要的单词单独放在一行即可。因此,C 字典文件看起来像这样。
要使用字典补全,需要按下 CTRL-X CTRL-K。补全类似于 CTRL-P 和 CTRL-N 按键。因此... 要输入 “typedef”,您只需要输入 t CTRL-X CTRL-K,然后... 名称就补全了。