Omnicomplete在Vim for python/3中可以完成函数名还是只完成方法



为了说明我的问题,这里有一个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帖子: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(             )

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

我愿意听取任何建议。

只需像Vim Wiki中建议的那样设置Omni Completion,它将适用于所有语言:

filetype plugin on
set omnifunc=syntaxcomplete#Complete

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

autocmd FileType python set omnifunc=syntaxcomplete#Complete

最新更新