如何修复Vim中对象实例缺失的Python自动补全?
我在使用Vim的自动补全功能时发现了一个奇怪的情况。当我在模块级别创建对象时,Vim的自动补全功能可以正常工作,能够识别我创建的实例:
但是如果我在一个函数或类里面尝试同样的操作,自动补全就不再有效了:
有没有人知道怎么解决这个问题,或者有没有办法让自动补全在非模块范围内的实例上也能工作?
3 个回答
0
扩展一下@BergmannF的回答。如果你不想让rope's completion
自动选择第一个选项,只需在imap
命令后面加上<C-P>
(表示选择上一个选项 -> 这样就不会有选项被选中了)。
imap <C-Space> <C-R>=RopeCodeAssistInsertMode()<CR><C-P>
1
我需要使用以下代码才能让 ctrl+space 这个组合键正常工作
imap <Nul> <C-R>=RopeCodeAssistInsertMode()<CR>
14
虽然这个方法没有使用Vim的自动补全插件,但通过使用rope、ropemode和ropevim,我们还是可以在方法中实现自动补全:
虽然这并不是我想要的完全效果,但它的工作效果还不错。
我这样设置的:我从这里安装了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就可以打开rope的补全菜单了。