Answers:
vim中有许多不同的自动完成功能。一种方法是使用SuperTab。这提供了一种随时随地或多或少地使用制表符完成的方法。这将使您Tab在部分键入单词以获取完成列表之后点击。例如,键入eatF
后跟Tab以展开为eatFood.
请注意:这些图片都链接到实际的gif示例。
Vim具有出色的其他选择。您应该阅读:h ins-completion
以了解各种内置完成选项。使用vim的Ctrl- - XCtrl,O结合蟒感知插件像绝地武士可以给一个完成的味道。绝地可以配置给文档上全方位完成(这是什么Ctrl- XCtrl- O一样)。然后,完成候选人的文档将显示在拆分窗口中。
使用类似的插件,但使用不同的选项会导致各种行为。例如,有可能不需要提示自动补全(如果您要这样做的话)。相反,在您键入单词的一定数量的字母(例如2或3)之后,插件可以尝试在菜单中智能地提供可能的补全。
因此,简短的答案是肯定的!但是配置过程可能会有些复杂。我认为这是掌握vim漫长阶梯中的一步。
默认情况下,应启用以下功能-即在当前文件(和所有打开的文件)中搜索自动完成功能Ctrl+P
:
你可以去ñ与EXT建议Ctrl+N
,在p与revious建议,Ctrl+P
并通过输入任何字母(将建议之后附加)选择它。
^P
恕我直言是更自然的。否则,感谢您的编辑(我希望我单击了右键,您获得了+2)。
world,word,wood
而不是相反)。所以^P
是最后一次使用完毕,这是非常方便的(我很少走得更远比列表中的3项,甚至在很长的文件)。
inoremap <C-Space> <C-N>
Vim本地支持完成。您可以在中阅读有关Vim支持的各种不同补全的信息:h ins-completion
。
总的来说,就我所发现的所有目的而言,ins-completions足以满足我的喜好,但是有些完成插件可以为ins-completions提供更多的价值。NeoComplete,YCM(YouCompleteMe)都是相同的。从某种意义上说,它们是更高级的,因为它们尝试更准确地组合不同类型的完成,并且它们还具有高级的缓存机制,因此它们往往会更快。YCM甚至可以与外部编译器/实用程序一起使用,以提供更好的IntelliSense。
是的,存在vim的自动完成脚本。“最佳”选择取决于您的编程语言。由于您的示例代码是Python,因此建议您看一下Jedi。在此基础上,您可以完成我的存在,它也支持其他语言,但有时看起来太大了。对于其他语言,您可以浏览关于vim脚本的详细信息。