可以在Vim中使用Omnicomplete来获取python / 3完整的函数名称或方法吗?

时间:2017-01-10 21:37:26

标签: python vim autocomplete macvim omnicomplete

为了说明我的问题,这里有一个关于Omnicomplete如何在我的机器上运行的简单示例:

name = "Bob"
na<C-x><C-o>      gives-----> name
name.<C-x><C-o>   gives-----> (correct dropdown menu of methods for string)
prin<C-x><C-o>    gives-----> (-- Omni completion (^O^N^P) Pattern not found)

我期待最后一行扩展到printprint(或类似的东西。这是正确的行为(Omnicomplete只为python / 3完成方法)吗?如果是这样,上面最后一个案例中的函数完成是一个代码片段的示例吗?

我在tmux终端中使用MacVim。我的:version表示VIM 8.0。我有+python/dyn+python3/dyn个功能。我的~/.vimrc有这一行(等等):

autocmd FileType python set omnifunc=python3complete#Complete

现在,我只编辑python3文件,所以我认为 omnifunc=python3...没问题。

半相关的SO帖子:Problem with Vim omnicomplete and system Python

编辑:我可能有一个解决方法,但我不知道如何实现它。

观察:

 import builtins
 builtins.pr<C-x><C-o>   gives-----> (dropdown menu with print() and property()    )
 builtins.pri<C-x><C-o>  gives-----> (autocompletes to builtins.print(             )

是否可以在不编写<C-x><C-o>和使用import builtins对象的情况下复制builtins的此操作?如果<C-x><C-o>之前的字符串中没有builtins.,那么<C-x><C-o>搜索会假定为.吗?

我全神贯注于任何建议。

2 个答案:

答案 0 :(得分:0)

您是否尝试将以下内容用于omnifunc:

autocmd FileType python set omnifunc=syntaxcomplete#Complete

答案 1 :(得分:0)

只需按照Vim Wiki中的建议设置Omni Completion,它就可以在所有语言中使用:

filetype plugin on
set omnifunc=syntaxcomplete#Complete