如何修复 Vim 中对象实例缺少 Python 自动完成功能?

发布于 2024-11-24 23:15:25 字数 342 浏览 0 评论 0原文

当我尝试对对象使用自动完成功能时,我发现 Vim 中有一个奇怪的行为。如果我在模块级别实例化对象,Vim 自动完成功能将在我创建的实例上运行:

Screenshot ofworking finish

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

Screnshot of non-working finish

有谁知道如何解决这个问题,或者有没有办法让omnicompletion在非模块范围内的实例上工作?

I have found a strange behavior in Vim when I attempt to use autocompletion on objects. If I instantiate the objects on a module level, the Vim autocompletion will work on the instance I create:

Screenshot of working completion

If I try the same from within a function or class, it is no longer working:

Screnshot of non-working completion

Does anyone know how to fix this, or is there a way to get omnicompletion to work on instances in a non module-scope?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自演自醉 2024-12-01 23:15:25

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

尽管不完全是我想要的,但它效果很好。

我让它像这样工作:
我从 此处 安装了 rodvim 发行版,并将以下几行添加到我的 .vimrc< /code> 文件:

" 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 将弹出绳索补全菜单。

Even though it does not use Vim’s omnicompletion plugin, by using rope, ropemode and ropevim it is possible to get autocompletion in methods:

Autocompletion screenshot

Even though not really exactly what I wanted it works pretty well.

I got it working like so:
I installed the ropevim distribution from here and added the following lines to my .vimrc file:

" 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>

Now pressing Ctrl+Space will bring up the rope completion menu.

萌逼全场 2024-12-01 23:15:25

我必须使用以下行才能使 ctrl+space 正常工作

imap <Nul> <C-R>=RopeCodeAssistInsertMode()<CR>

I had to use the following line to get ctrl+space working

imap <Nul> <C-R>=RopeCodeAssistInsertMode()<CR>
○愚か者の日 2024-12-01 23:15:25

扩展@BergmannF 答案。如果您不希望绳索完成选择第一个条目,只需将(转到上一个条目 -> 无条目)附加到imap 命令:

imap <C-Space> <C-R>=RopeCodeAssistInsertMode()<CR><C-P>

Expanding the @BergmannF answer. If you don't want the rope's completion to select the first entry just append <C-P> (go to previous entry -> no entry) to the imap command:

imap <C-Space> <C-R>=RopeCodeAssistInsertMode()<CR><C-P>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文