这两天因为在(后无法使用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的东西,所以要加入这个函数定义。