vim自動補全插件有 YouCompleteMe,Neocomplete等邑滨,
YouCompleteMe是補全神器,速度快钱反,但在windows下不好編譯驼修,便選擇Neocomplete
windows下Neocomplete的lua支持
- 安裝vim
Neocomplete需要vim編譯時加入 +lua 的支持,vim官網(wǎng)下載的安裝版本并沒有 +lua支持
找到一個已經(jīng)編譯支持了+lua/dyn的版本诈铛,只要下載后找到正確的dll文件放到vim目錄就可以了
https://tuxproject.de/projects/vim/
下載后解壓可用
- 查看是否編譯支持lua
打開vim,進(jìn)入命令模式墨礁,輸入version幢竹,里面有+lua/dyn這一項就是支持
輸入 :lua print('hello')
, 查看是否有l(wèi)ua,有則會輸出hello
沒有恩静,則會提示缺失的具體版本焕毫,比如會提示缺少 lua53.dll
這樣的信息。
- 下載lua53.dll
去下載對應(yīng)版本
https://sourceforge.net/projects/luabinaries/files/5.3.4/Windows%20Libraries/Dynamic/
下載解壓后驶乾,把lua53.dll拷貝到gvim.exe同級目錄中
再次打開vim邑飒,命令模式輸入 :echo has("lua")
,如返回1级乐,便可以了疙咸。
注:lua53.dll的版本需和vim的版本對應(yīng),要么都是64位风科,要么都是32位版本
Neocomplete使用中遇到問題
- 系統(tǒng)中只安裝py3版本沒有py2版本python時
經(jīng)常出現(xiàn)下面的錯誤提示:
E117: unknown function:pythoncomplete#Complete
查看 version
撒轮,有+python和+python3,
然后查看 echo has(“python”)
贼穆, 結(jié)果為0题山;
echo has(“python3”)
, 結(jié)果為1故痊。
問題應(yīng)該是neocomplete調(diào)用補全方法時顶瞳,使用的是python2的文件,需要修改為python3.
問題解決,將 .vimrc 中的3處pythoncomplete修改為python3complete慨菱,如下焰络。
autocmd FileType python setlocal omnifunc=python3complete#Complete
- 和多光標(biāo)操作插件沖突(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觸發(fā)它的函數(shù)調(diào)用洲劣,直到我們完成多個光標(biāo)編輯备蚓。