在插入模式下,利用自动补全(Insertion-Completion)功能,vim能够根据正在输入的字符,查找匹配的关键字并显示在弹出菜单(popup menu)中。通过选择匹配项,可以补全输入的部分关键字甚至整行文本。
Vim可以针对整行文字、关键字、字典、词典、标签、文件名、宏、命令和拼写等等进行补全。上节介绍了进入补全模式的操作方法;本节将详细介绍各种补全方式的特点。
使用Ctrl-X Ctrl-L快捷键,将在'complet'选项定义的范围内查找匹配的行。假设在编辑网页文档时输入“<h”,然后调用整行匹配,将会显示所有以“h”开头的HTML标签。
使用Ctrl-X Ctrl-N或Ctrl-X Ctrl-P快捷键,将在当前文件中查找匹配的关键字。
此处的关键字,是指由'iskeyword'选项定义的字符串。默认情况下,iskeyword=@,48-57,_,192-255,认为由数字、字母和下划线组成的字符串为关键词。而句点和短横线,则被是为关键词之间的分隔符。您可以使用set iskeyword
命令,来改变关键词的定义。
使用Ctrl-X Ctrl-K快捷键,将在'dictionary'选项定义的文件中查找匹配的关键词。
默认情况下'dictionary'选项为空。可以使用:set dictionary
命令,来指定字典文件。
对于Linux系统,通常会查找/usr/dict/words或/usr/share/dict/words:
:set dictionary=/usr/dict/words,/usr/share/dict/words
对于Windows系统,如果已经安装了Cygwin,那么可以选择添加words软件包;然后根据您的Cygwin安装目录,来指定字典文件:
set dictionary=D:\cygwin64\usr\share\dict\linux.words
你也可以包括其它自定义的字典文件:
:set dictionary+=home/oualline/words
假设我们需要输入单词“acknowledged”,只需要首先输入“ack”三个字母,然后点击Ctrl-X Ctrl-K快捷键即可进行匹配:
使用Ctrl-X Ctrl-T快捷键,将在'thesaurus'选项定义的文件中查找匹配的关键词。
默认情况下'thesaurus'选项为空。可以使用:set thesaurus
命令,指定字典文件。
首先下载词典文件;然后解压缩后将其中的thesaurus.txt文件复制为~/.vim/thesaurus/english.txt;最后使用以下命令,来指定词典文件:
:set thesaurus=$HOME\vimfiles\thesaurus\english.txt
假设我们输入单词“enjoy”,然后点击Ctrl-X Ctrl-T快捷键,将会在词典文件中查找光标下的单词:
因为在词典文件中,每行会包含多个单词,所以将显示匹配行中的所有单词:
bask enjoy relish savor savour lie
使用Ctrl-X Ctrl-I快捷键,将在当前文件以及由'include'选项指定的包含进来的文件中查找匹配的关键词。
很多编程语言都会提供从外部文件中调用代码的功能。比如,C语言的#include语法和Python的import语法等。Vim将根据文件类型所对应的'include'选项,来查找指定包含的文件。您可以使用:set include?
命令,查看当前的'include'选项设置。
使用Ctrl-X Ctrl-]快捷键,将在当前文件以及由'include'选项指定的包含进来的文件中查找匹配的标签。
使用Ctrl-X Ctrl-F快捷键,可以匹配并补全文件名。
如果当前光标下的文本不包含任何路径信息,那么将显示当前目录下的文件列表。
如果当前光标下的文本包含任何(绝对或相对)路径信息,那么将显示其指定目录下的文件列表。
如果当前光标下的文本包含唯一的路径信息(比如“~”),那么将自动转换为目录的完整名称。
使用Ctrl-X Ctrl-D快捷键,将在当前文件以及由'include'选项指定的包含进来的文件中,查找由'define'选项定义的宏(definition/macro)。
'define'选项定义的正则表达式默认为“^\s*#\s*define”,将查找以“define”语法定义的宏。您可以使用:set define?
命令,查看当前的'define'选项设置。
使用Ctrl-X Ctrl-V快捷键,将匹配Vim命令,以便在您开发Vim脚本时加速代码录入。
使用Ctrl-X Ctrl-U快捷键,将由'completefunc'选项指定的自定义函数来进行匹配。
使用Ctrl-X Ctrl-S快捷键,将根据拼写检查给出补全建议。
请注意,为了使用拼写补全,请确保已使用以下命令,打开了拼写检查特性:
:set spell
使用Ctrl-X Ctrl-O快捷键,将由'omnifunc'选项指定的自定义函数来进行匹配。Vim将通过$VIMRUNTIME/autoload/{filetype}complete.vim文件来实现全能补全特性,现在支持8种语言,包括C, (X)HTML with CSS, JavaScript, PHP, Python, Ruby, SQL和XML。
例如首先输入HTML标签的前几个字母“<p cl”,然后按下Ctrl+X和Ctrl+O键,将根据语法显示匹配菜单:
建议将以下命令,加入vimrc配置文件的:filetype命令之后,以更好地利用全能补全功能:
if has("autocmd") && exists("+omnifunc") autocmd Filetype * \ if &omnifunc == "" | \ setlocal omnifunc=syntaxcomplete#Complete | \ endif endif
您可以使用:set omnifunc?
命令,查看当前的'omnifunc'选项设置。
方式 | 快捷键 | 相关选项 | 帮助信息 |
---|---|---|---|
整行 | Ctrl-X Ctrl-L | :h compl-whole-line | |
当前文件内的关键字 | Ctrl-X Ctrl-N | :h compl-current | |
Ctrl-X Ctrl-P | |||
字典 | Ctrl-X Ctrl-K | 'dictionary' | :h compl-dictionary |
词典 | Ctrl-X Ctrl-T | 'thesaurus' | :h i_CTRL-X_CTRL-T |
当前文件及其包含的文件 | Ctrl-X Ctrl-I | 'include' | :h compl-keyword |
标签(Tag) | Ctrl-X Ctrl-] | :h compl-tag | |
文件名 | Ctrl-X Ctrl-F | :h compl-filename | |
定义或宏 | Ctrl-X Ctrl-D | 'define' | :h compl-define |
Vim 命令 | Ctrl-X Ctrl-V | :h compl-vim | |
用户自定义 | Ctrl-X Ctrl-U | 'completefunc' | :h compl-function |
全能 (omni) | Ctrl-X Ctrl-O | 'omnifunc' | :h compl-omni |
拼写建议 | Ctrl-X Ctrl-S | :h compl-spelling | |
关键字 | Ctrl-N | 'complete' | :h compl-generic |
Ctrl-P |