vim的关键词的补全功能
在插入模式下,利用自动补全(Insertion-Completion)功能,vim能够根据正在输入的字符,查找匹配的关键字并显示在弹出菜单(popup menu)中。通过选择匹配项,可以补全输入的部分关键字甚至整行文本。
Vim可以针对整行文字、关键字、字典、词典、标签、文件名、宏、命令和拼写等等进行补全。本节将首先介绍进入补全模式的操作方法;下节将详细介绍各种补全方式的特点。
关键字补全(Generic keyword completion)
使用Ctrl-N
或Ctrl-P
键,将按照'complete'
选项指定的范围来搜索匹配的关键字。其默认值为:
:set complete=.,w,b,u,t,i
也就是说,默认将在以下来源中查找关键字:
- 在当前缓冲区中进行查找;
- 在其他窗口中进行查找;
- 在其他已载入的缓冲区中进行查找;
- 在没有载入缓冲区的文件中进行查找;
- 在当前的标签(
tags
)列表进行查找; - 在由当前文件(如
#include
)包含进来的头文件中进行查找。
通过以下命令设置'complete'
选项,可以定义自动补全的查找范围:
:set complete=key,key,key
命令中可能出现的key值如下:
. | 当前缓冲区 |
---|---|
b | 缓冲区列表中的其它已载入的缓冲区 |
d | 当前文件以及由’include’选项指定的包含进来的文件,查找由’define’选项定义的宏(definition/macro) |
i | 当前文件以及由’include’选项指定的包含进来的文件 |
k | 由’dictionary’选项指定的文件 |
kspell | 当前激活的拼写检查 |
k{dict} | 名为{dict}的文件 |
s | 当前激活的拼写检查 |
t | 标签(tags)文件 |
] | 标签(tags)文件 |
u | 缓冲区列表中的没有载入的缓冲区 |
w | 在其他窗口中载入的文件 |
使用以下命令,可以将字典文件添加到搜索列表中:
:set complete+=k
使用以下命令,可以将包含的文件从搜索列表中移除:
:set complete-=i
使用:h 'complete'
命令,可以查看'complete'
选项的帮助信息。
如果我们使用以下命令,设置了在查找过程中忽略大小写,那么在自动完成时,反而会造成区分大小写:
:set ignorecase
使用以下命令,则可以设置在自动完成时忽略大小写:
:set infercase
Ver: 2.0 | YYQ
^X模式(Ctrl-X Mode)
在插入模式下,输入Ctrl-X
将进入^X
模式(插入和替换模式的一个子模式)。屏幕底部将显示以下提示信息:
-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)
您可以选择以下自动补全方式:
- Ctrl-] ,标签(tags)补全
- Ctrl-D ,定义补全
- Ctrl-E ,向上滚动文本
- Ctrl-F ,文件名补全
- Ctrl-I ,当前文件以及包含进来的文件补全
- Ctrl-K ,字典补全
- Ctrl-L ,整行补全
- Ctrl-N ,当前文件内的关键字补全,向下选择匹配项
- Ctrl-O ,全能补全
- Ctrl-P ,当前文件内的关键字补全,向上选择匹配项
- Ctrl-S ,拼写建议补全
- Ctrl-U ,用户自定义补全
- Ctrl-V ,Vim命令补全
- Ctrl-Y ,向下滚动文本
假设在编辑main.c
文件时,想要查找一个宏定义,那么首先按下ctrl-X
键进入^X
模式,然后再按下CTRL-D
键,这时就会在弹出菜单中显示匹配项。
补全弹出菜单(popupmenu-completion)
随着弹出菜单的显示,将会自动应用第一个匹配项。
使用以下快捷键,可以在弹出菜单中移动和选择匹配项:
- 使用
Ctrl-N
和Ctrl-P
上下移动时,输入的文本也会随之变化。 - 使用
<Up>
和<Down>
上下移动时,输入的文字并不会变化。 - 使用
<PageUp>
和<PageDown>
键,可以在菜单中翻页。 - 使用
Ctrl-Y
或Enter
回车键,将使用当前匹配项完成补全。 - 使用
Ctrl-E
键,将关闭菜单并退回到文字输入的原始状态。 - 使用
Esc
键,将关闭弹出菜单,但会保留之前应用的匹配项。
请注意,如果您不希望应用任何匹配项完成补全时,应该使用Ctrl-E
键,而不是使用Esc
键来取消操作。
使用:h popupmenu-keys
命令,可以查看关于弹出菜单快捷键的帮助信息。