有没有一种方法可以改变vim omnicomplete菜单的行为?

15

Omnicompletion功能可以正常使用,但它会自动插入第一个结果。

我想要的是打开Omnicomplete菜单,然后通过输入内容逐渐缩小搜索范围,最后按下回车键、Tab键、空格键或其他按键插入所选的菜单项。

这种做法可行吗?

4个回答

17

您正在寻找的命令是:

:set completeopt+=longest

它将插入所有建议的最长公共前缀,然后您可以键入和删除以缩小或扩大结果。


1
这样做后,再次按Tab键会完全完成,而不是完成下一个最长的公共前缀。有没有办法实现这个功能? - Alexander Duchene
@AlexanderDuchene 你可能有另一个插件正在对你进行此操作。 - Abdo

3
set wildmenu
set wildmode=list:longest,full

在这里发现还有一个名为SuperTab continued的插件,可满足您的所有自动完成需求。


0

0

这是一般的 Vim 自动补全行为。如需完整概述,您可以执行以下操作

:he compl-current

但是针对您的特定情况(您需要完成状态为2或3(在上面的文档中描述)。您可以简单地使用Backspace或Control-H从状态一跳转到状态二。在状态2中,您可以通过键入常规字符来缩小搜索范围。因此,要完成缩小的完成:

compl<C-X><C-P><BS>letion

我知道这完全是反过来的,但这就是它的工作方式。

编辑:您也可以使用向下箭头键代替Control-H或退格键,这样还有不删除字符的好处。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接