【问题标题】:How do I get auto-suggestions for array options when typing in Vim?输入 Vim 时如何获得数组选项的自动建议?
【发布时间】:2011-09-17 19:41:36
【问题描述】:

假设我打字

a = [1, 2]

在 vim 的 .py 文件中以及当我键入“a”时。并点击 TAB,我想获得与列表相关的建议菜单。

编辑 1 以回应 Robin 的评论: 我认为这在 vim 中是可能的,因为有一个插件可以检查给定的 python 代码是否是有效代码(我不知道插件叫什么)。看看:

【问题讨论】:

    标签: python vim autocomplete intellisense


    【解决方案1】:

    阅读有关将 Vim 设置为 Python IDE 的众多博文之一。 Here's one 让您开始。特别是,您对 OmniComplete 功能感兴趣。

    这默认绑定到按键 Ctrl-xCtrl-o 但您可以将其重新绑定到 tab 键。

    请注意,它对变量的类型不敏感。如果您键入,它可以为您完成:

    string.<ctl-x><ctl-o>
    

    您将获得字符串对象方法的列表。但是如果你按照你在问题中描述的那样做:

    x = "a string"
    
    x.<ctl-x><ctl-o>
    

    vim 将不知道变量x 包含一个字符串,并且无法提供方法列表。

    关于全能的信息:

    :help omnifunc
    

    【讨论】:

    • @Spiritwalker 如果可以的话,我不知道该怎么做。我真的很欢迎另一个可以证明我错了的答案,因为那会非常有用。
    • 找出对象可以做什么的唯一方法是评估所有内容 --- 这意味着它更适合交互式解释器接口,例如 IDLE,它已经知道 @987654327 @ 指代。
    【解决方案2】:

    最近版本的 vim 带有一个名为 pythoncomplete 的全能完成脚本。

    打开一个python文件,输入

    :set completefunc?
    

    检查当前完成功能是什么。如果你回来了

    completefunc=
    

    那么当前没有设置完成功能。您可以通过键入

    将 pythoncomplete 设置为完成函数
    :set completefunc=pythoncomplete#Complete
    

    您可以使用(在您的 vimrc 中)将其设置为 python 文件的默认值

    autocmd FileType python set completefunc=pythoncomplete#Complete
    

    现在当你在 vim 中时,你可以通过 Ctrl+X Ctrl+O 来使用omnicomplete,你应该会得到一个如下所示的弹出菜单:

    你也可以在插入模式下将它绑定到 tab 键(在你的 vimrc 中):

    inoremap <Tab> <C-x><C-o>
    

    要了解有关与出现的下拉菜单交互的更多信息,请尝试

    :help ins-completion
    

    【讨论】:

    • 我认为这就是答案。不过,我还有一个问题:“如何自动摆脱顶部打开的额外文档窗口([Scratch] [Preview])?”。
    • 检查 :set completeopt?。那里的“预览”选项使预览窗口出现,其中包含文档字符串。如果您设置了没有预览的 completeopt,它应该不再出现。
    • @Spiritwalker 也可以看到 info.birnamdesigns.com/wiki/… 关于如何在离开插入模式或移动光标时自动关闭预览窗口的提示(我更喜欢插入模式方法)
    • @Michael,感谢您的链接。我认为您必须删除链接末尾的“for”。
    • 哦,你是对的。我想知道我是怎么做到的。这是正确的链接:info.birnamdesigns.com/wiki/…
    猜你喜欢
    • 2014-03-26
    • 2013-12-09
    • 2020-11-09
    • 1970-01-01
    • 2016-09-07
    • 2021-04-21
    • 2014-10-01
    • 2018-06-30
    • 2012-07-31
    相关资源
    最近更新 更多