打造一个有感觉的Vim(二)

下面的主题将会是Vim插件的介绍,介绍顺序将按照https://github.com/humiaozuzu/dot-vimrc这一篇文章,但当中提及的插件我并没有全部有过。所以只讲一些我比较熟悉或者是比较感兴趣的。

  1.neocomplcache

    这个插件是VIM系统的终极自动完成插件,有两个特点

    (1)通过在缓存中维护关键字记录来实现自动完成系统。

    (2)提供许多比原有VIM的自动完成更强大的特性。

在介绍这个插件之前,首先来简要说说VIM的自动完成。
VIM的自动完成就是根据你的输入搜索和输入匹配的关键字,有以下几个主要关键字匹配方式
(1).在当前文件中搜索可以匹配的关键字。
(2).在所有打开窗口中搜索可以匹配的关键字。
(3).在omnifunc选项对应的自动完成语法文件中搜索可以匹配的关键字。
(4).在tags文件中搜索可以匹配的关键字。
(5).在dictionary选项对应的字典文件中搜索可以匹配的关键字。
(6).自动补全行。
此外,VIM还提供自动补全文件路径,下面来一一介绍。
(1).以所有方式匹配
在insert模式下按下Ctrl+p(以下Ctrl+p以<C-p>代替,其他关联Ctrl命令类似)即可进入VIM的全模式自动完成,这个命令将包含以上所有匹配方式所能匹配到的候选项。如下图所示(在没有输入任何字符的情况下按下<C-p>命令)

此时继续按下<C-p>将转到前一个候选项(pre),按下<C-n>)将转到下一个候选项(next)
而没有匹配到任何候选项将出现下图的提示信息(输入一个中文按下C+p由于所有的匹配搜索都无法找到与之对应的关键字,于是有如下图示)

(2).以特定方式匹配
在insert模式下按下<C-x>可以进入特定的补全模式,此时Vim会等待你输入下一个命令。
所有的匹配都可以使用<C-p>,<C-n>在候选字中移动
<Ctrl-p>局部补全
在当前的文件中寻找匹配的关键字。如下图(此时当前文件中只有一个单词,于是只匹配到了这一个词)

<Ctrl-]>tags补全
在tag文件中寻找匹配的关键字。关于如何生成tag文件将在后续章节中介绍。
<Ctrl-K>字典补全
在字典文件中寻找匹配的关键字,字典文件通过
:set dictionary=[filename]
这个命令来指定,而字典文件其实就是一堆关键字组成的文本文件,每个关键字各占一行,或者每个关键字通过空格分开。例如我们有一个名为dict(无后缀名)的字典文件,文件存放在D盘的根目录下,文件的内容如下

server
CreateObject
RecordSet
MoveNext
NextRecordSet
CursorLocation

此时我们可以通过
:set dictionary=d:/dict
来指定字典文件,这样在按下<C-x>后按下<C-k>可以看到字典文件中的关键字已经出现在候选的匹配关键字中(当然,我们同样可以在配置文件中指定字典文件,这样就不必每次都要手动加载了)
<Ctrl-o>语法补全
这个补全就是针对不同的语言类型可以使用不同的语法补全文件来匹配关键字,就像VS中的IntelliSense。Vim已经内置了一些语法补全的文件,如下图

我们需要通过设置omnicfunc这个配置来使用语法补全文件,例如我们可以通过如下配置在当前文件中使用JS语法补全。
:set omnicfunc=javascriptcomplete#CompleteJS
这样在insert模式下按下<C-x><C-o>的组合键之后就能看见有JS语法候选词出现了
<Ctrl-l>行补全
就是在当前文件和打开窗口中进行行匹配,效果如下

<Ctrl-f>文件路径补全
在当前的目录下补全文件路径或文件名,效果如下


简要介绍了Vim的自动完成后我们发现了两个问题:
1.每次都要输入<C-x><C-*>的组合命令后才能进行补全
2.需要使用<C-p>在候选词中移动
neocomplcache解决了以上两个问题,使得Vim的自动补全更加友好。并且还提供了在缓存中匹配关键字的功能。
要安装neocomplcache首先需要去https://github.com/Shougo/neocomplcache.vim这个地址下载neocomplcache这个插件。
解压完后你会得到如下几个文件

将这几个文件vimfiles这个文件夹下,如果vimfiles下已经有对应的文件夹,将文件直接丢进去即可。
然后在-vimrc中加入一句
let g:neocomplcache-enable-at-startup = 1
重启GVIM,neocomplcache的安装就完成了。
接下来我们还需要配置一下,当然,配置选项我们都应该放在-vimrc这个文件中,让GVIM每次启动时自动加载,以下是笔者的配置

"neocomplcache config
"打开VIM启动neocomplcache
let g:neocomplcache_enable_at_startup = 1 "使用tab在候选词之间切换 inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" "使用Ctrl+l逐字补全 inoremap <expr><C-l> neocomplcache#complete_common_string() "撤销补全 inoremap <expr><C-g> neocomplcache#undo_completion() "当前文件是JS文件使用javascriptcomplete#CompleteJS来进行语法补全 autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS "neocomplcache config end

其他的具体配置可以参考https://github.com/Shougo/neocomplcache.vim/blob/master/doc/neocomplcache.txt这个地址对此插件的每个配置的详细介绍
下面是重启VIM后的效果,候选词可以自动弹出了
字典补全

文件名补全

语法补全

最后,VIM7.4就要发布了,期待中...


原文地址:https://www.cnblogs.com/iiaijimaai/p/3054115.html