许多IDE会根据用户类型自动完成函数名称,变量,方法名称等。最好的名称基于语言的内置库以及同一程序的其他文件中已经定义的名称来完成。

例如,当我键入以下Python时程序:

hungy = True

def eatFood(food):
    pass

if hungry:
    eatF


eatF会自动将eatFood()显示为可用的自动完成选项。如果是这样,如何启用它?

#1 楼

vim中有许多不同的自动完成功能。一种方法是使用SuperTab。这提供了一种随时随地或多或少地使用制表符补全的方法。在部分键入单词以获取完成列表之后,这将使您可以打Tab。例如,键入eatF后跟Tab即可扩展到eatFood.

请注意:这些图片均链接到实际使用的gif示例。 Vim具有出色的其他选择。您应该阅读:h ins-completion来查看各种内置完成选项。使用vim的Ctrl-XCtrl-O并结合python感知的插件(如jedi)可以提供一种完成风格。可以将Jedi配置为提供有关全功能完成的文档(这是Ctrl-XCtrl-O的功能)。然后,完成候选人的文档将显示在拆分窗口中。



使用类似的插件,但使用不同的选项会导致各种行为。例如,可能不需要提示自动补全(如果您要这样做的话)。相反,在键入一个单词的一些字母(例如2或3)后,插件可以尝试在菜单中智能地提供可能的补全。因此,简短的答案是肯定的!但是配置过程可能会有些复杂。我认为这是掌握vim漫长阶梯的一步。

评论


我已经尝试了所有这些,而且我总是回到SuperTab,这是最不麻烦的。

– Craigp
2015年2月4日在7:31

我也非常喜欢YouCompleteMe插件,因为它会提示您输入,您可以选择或忽略建议。是的,在视觉上很难忽略,但是它在我的工作流程中非常不打扰,因为它需要更少的按键。

–繁荣
15年2月4日在22:51

在将动画链接到gif动​​画的意义上,我将动画更改为“单击”。

–davidlowryduda
2015年2月5日,7:06

我无法在我的工作计算机上使用YouCompleteMe,因为我没有root来安装依赖项,SuperTab是到目前为止的第二个最佳选择。

–查尔斯·克莱顿(Charles Clayton)
17年5月25日在20:48

@mixedmath就我而言,superTab不起作用。

–alhelal
18-2-15在9:27

#2 楼

此类功能-即在当前文件(和所有打开的文件)中搜索自动完成功能,默认情况下应启用以下功能:Ctrl+P:使用Ctrl+N的下一个建议,使用Ctrl+P的前一个建议,并通过键入任何字母(将在建议后立即添加)选择它。

评论


致编辑(Jasper):我很可能想再次写一些我最近写的东西,而不是将来写的东西,或者是在文件的开头。因此^ P是更自然的恕我直言。否则,感谢您的编辑(我希望我单击了右键,您获得了+2)。

–吗?
2015年2月3日在18:48



是的,我得到了那些虚构的互联网要点:)我一直认为建议列表将按字母顺序排序...

–碧玉
2015年2月3日,18:53

@Jasper的出现顺序是这样的(至少对我来说当然是这样,也请参见上方:世界,单词,木材,而不是相反)。因此,^ P是最后使用的补全,非常方便(即使在长文件中,我很少超过列表中的3个项目)。

–吗?
15年2月3日在18:55

protip:inoremap

– wchargin
2015年2月3日在22:04

#3 楼

Vim本地支持完成。您可以在:h ins-completion上了解Vim支持的各种不同的补全。一般来说,就我所发现的所有目的而言,ins补全足以满足我的喜好,但是有些补全插件可以添加更多内容。超越了ins-completions提供的价值。 NeoComplete,YCM(YouCompleteMe)都是相同的。从某种意义上说,它们是更高级的,因为它们尝试更准确地组合不同类型的完成,并且它们还具有高级的缓存机制,因此它们往往会更快。 YCM甚至可以与外部编译器/实用程序一起使用,以提供更好的IntelliSense。

#4 楼

是的,存在vim的自动完成脚本。 “最佳”选择取决于您的编程语言。由于您的示例代码是Python,因此建议您看一下Jedi。在此基础上,您可以完成我的存在,它也支持其他语言,但有时看起来太大了。对于其他语言,您可以浏览关于vim脚本的详细信息。

#5 楼

在插入模式下,键入单词的前两个字符,然后按:

Ctrl-N to insert the next matching word; or
Ctrl-P to insert the previous matching word. 


在程序中输入变量名称时,这特别有用。

'complete'选项控制搜索关键字的位置(包括文件,标记文件,缓冲区等)。

'completeopt'选项控制完成的方式(对于例如是否显示菜单)。