美文网首页
vim Neocomplete补全插件使用问题

vim Neocomplete补全插件使用问题

作者: Dingsf | 来源:发表于2017-08-08 16:27 被阅读2052次

    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',在插入模式并输入一些东西。它变慢了,并添加:

    <Plug>(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 <Esc>)
    function! Multiple_cursors_after()
      if exists(':NeoCompleteUnlock')==2
        exe 'NeoCompleteUnlock'
      endif
    endfunction
    

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

    相关文章

      网友评论

          本文标题:vim Neocomplete补全插件使用问题

          本文链接:https://www.haomeiwen.com/subject/cgotrxtx.html