vim Neocomplete补全插件使用问题

vim自动补全插件有 YouCompleteMe,Neocomplete等,

YouCompleteMe是补全神器,速度快,但在windows下不好编译,便选择Neocomplete

windows下Neocomplete的lua支持

  • 安装vim

Neocomplete需要vim编译时加入 +lua 的支持,vim官网下载的安装版本并没有 +lua支持

找到一个已经编译支持了+lua/dyn的版本,只要下载后找到正确的dll文件放到vim目录就可以了

https://tuxproject.de/projects/vim/

下载后解压可用

  • 查看是否编译支持lua

打开vim,进入命令模式,输入version,里面有+lua/dyn这一项就是支持

输入 :lua print('hello'), 查看是否有lua,有则会输出hello

没有,则会提示缺失的具体版本,比如会提示缺少 lua53.dll 这样的信息。

  • 下载lua53.dll

去下载对应版本

https://sourceforge.net/projects/luabinaries/files/5.3.4/Windows%20Libraries/Dynamic/

下载解压后,把lua53.dll拷贝到gvim.exe同级目录中

再次打开vim,命令模式输入 :echo has("lua") ,如返回1,便可以了。

注:lua53.dll的版本需和vim的版本对应,要么都是64位,要么都是32位版本

Neocomplete使用中遇到问题

  • 系统中只安装py3版本没有py2版本python时

经常出现下面的错误提示:

E117: unknown function:pythoncomplete#Complete

查看 version ,有+python和+python3,

然后查看 echo has(“python”) , 结果为0;

echo has(“python3”) , 结果为1。

问题应该是neocomplete调用补全方法时,使用的是python2的文件,需要修改为python3.

问题解决,将 .vimrc 中的3处pythoncomplete修改为python3complete,如下。

autocmd FileType python setlocal omnifunc=python3complete#Complete
  • 和多光标操作插件冲突(MULTIPLE-CURSORS)

使用'vim-multiple-cursor',在插入模式并输入一些东西。它变慢了,并添加:

(neocomplete_start_auto_complete)

可在vimrc配置文件中添加如下配置:

" Called once right before you start selecting multiple cursors
function! Multiple_cursors_before()
  if exists(':NeoCompleteLock')==2
    exe 'NeoCompleteLock'
  endif
endfunction

" Called once only when the multiple selection is canceled (default )
function! Multiple_cursors_after()
  if exists(':NeoCompleteUnlock')==2
    exe 'NeoCompleteUnlock'
  endif
endfunction

通过这种锁定和解锁,我们可以防止neocomplete触发它的函数调用,直到我们完成多个光标编辑。

你可能感兴趣的:(vim Neocomplete补全插件使用问题)