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

use*_*386 6 python vim autocomplete omnicomplete macvim

为了说明我的问题,这里有一个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)
Run Code Online (Sandbox Code Playgroud)

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

我在终端上用tmux使用MacVim.我:version说VIM 8.0.我有+python/dyn+python3/dyn功能.我~/.vimrc有这条线(等等):

autocmd FileType python set omnifunc=python3complete#Complete
Run Code Online (Sandbox Code Playgroud)

现在,我只编辑python3文件,所以我认为 omnifunc=python3...没关系.

半相关的SO帖子:Vim omnicomplete和系统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(             )
Run Code Online (Sandbox Code Playgroud)

可以<C-x><C-o>在不编写import builtins和使用builtins对象的情况下复制此操作吗?也许<C-x><C-o>搜索假设builtins.前面的字符串<C-x><C-o>中没有.

任何建议都是我的耳朵.

pad*_*win 0

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

autocmd FileType python set omnifunc=syntaxcomplete#Complete
Run Code Online (Sandbox Code Playgroud)