当我尝试在对象上使用自动完成时,我在VIM中发现了一个奇怪的行为:
如果我在模块级别实例化对象,VIM自动完成将对我创建的实例起作用:
如果我在函数或类中尝试相同的操作,则不再有效:
有没有人知道如何解决这个问题,或者没有办法让omnicompletion处理非模块范围内的实例?
答案 0 :(得分:14)
即使它不使用Vim的omnicompletion插件,通过使用rope,ropemode和ropevim,也可以在方法中获得自动完成:
即使不是我想要的确实如此,但效果还不错。
我得到了这样的工作: 我从here安装了ropevim发行版,并将以下行添加到我的.vimrc文件中:
" Rope AutoComplete
let ropevim_vim_completion = 1
let ropevim_extended_complete = 1
let g:ropevim_autoimport_modules = ["os.*","traceback","django.*", "xml.etree"]
imap <c-space> <C-R>=RopeCodeAssistInsertMode()<CR>
现在按Ctrl + Space将显示绳索完成菜单。
答案 1 :(得分:1)
我必须使用以下行来使ctrl + space工作
imap <Nul> <C-R>=RopeCodeAssistInsertMode()<CR>
答案 2 :(得分:0)
扩展@BergmannF答案。如果您不希望rope's completion
选择第一个条目,只需将<C-P>
(转到上一个条目 - &gt;无条目)附加到imap
命令:
imap <C-Space> <C-R>=RopeCodeAssistInsertMode()<CR><C-P>