這兩天因爲在(後無法使用pydiction的補全着急上火,找了一大堆的文章都沒有結果,因爲對vim的腳本和內置對象基本不懂所以只能瞎貓碰死耗子一點點試驗,好在還是解決了
將python_pydiction.vim文件中110行最後的'('刪除以後,再寫下面的代碼
s = socket.socket(socket.AF<tab>
就能出現AF_INET等一堆提示了,不過在使用了AutoComplPop插件的時候你寫到socket.的時候提示的是vim自己的omni的東西
在網上給出的配置都會有這行autocmd FileType python set complete+=k$VIM/tools/pydiction-1.2/complete-dict iskeyword+=.,( 我試驗的時候加了不但沒有任何效果,同時還會讓AutoComplePop插件是去作用,所以只要按照官網上寫的加入這句
let g:pydiction_location='E:/Program Files/Vim/vimfiles/ftplugin/pydiction/complete-dict就夠了。
最後說一點如果你使用了AutoComplPop插件時在寫到s = socket.socket(socket.AF時就會報錯“Unknown function: GetSnipsInCurrentScope”查詢AutoComplPop的官網裏面有一段說明就是你要下載snipMate插件,並且在plugin/snipMate.vim中加如下一段:
fun! GetSnipsInCurrentScope()
let snips = {}
for scope in [bufnr('%')] + split(&ft, '/.') + ['_']
call extend(snips, get(s:snippets, scope, {}), 'keep')
call extend(snips, get(s:multi_snips, scope, {}), 'keep')
endfor
return snips
endf
這樣就不會報錯了,我理解是當你輸入socket.AF的時候AutoComplPop會去查找omni的智能提示沒有找到又去找snip的東西,所以要加入這個函數定義。