VIM中对象实例的Python自动完成

时间:2011-07-17 14:54:35

标签: python vim autocomplete

当我尝试在对象上使用自动完成时,我在VIM中发现了一个奇怪的行为:

如果我在模块级别实例化对象,VIM自动完成将对我创建的实例起作用:

working completion

如果我在函数或类中尝试相同的操作,则不再有效:

non working completion

有没有人知道如何解决这个问题,或者没有办法让omnicompletion处理非模块范围内的实例?

3 个答案:

答案 0 :(得分:14)

即使它不使用Vim的omnicompletion插件,通过使用rope,ropemode和ropevim,也可以在方法中获得自动完成:

enter image description here

即使不是我想要的确实如此,但效果还不错。

我得到了这样的工作: 我从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>