3

这个问题真的触动了我的神经。我的 vim 8.0 编辑器上同时安装了YouCompleteMeUltiSnips 。似乎这两个插件都使用tab键来完成自动完成,这造成了这个问题也已经解决的不兼容问题。不过,我的问题更具体。当我编写一段类似的代码<html时,会有一个弹出菜单显示该代码的所有相关片段。

UltiSnips 片段的 YCM 弹出菜单

我使用tab键浏览该菜单,但是当我按ctrl+y接受并因此展开其中一个片段时,什么也没有发生!我认为这种结构表明可以以某种方式从菜单中选择其中一个片段,而无需尝试为 UltiSnip 定义快捷方式。我究竟做错了什么?我应该如何导航和选择这些片段?

我也不想用任何新插件(如 supertab 等)填充我的 vim。

4

1 回答 1

0

解决方案实际上比我预期的要简单得多。一开始,我还以为自己不知道很傻,但是当我发现类似的问题时我想可能很多人都落入了同一个陷阱。

我不知道是否将其命名为错误,但这就是 Ultisnips 和 YouCompleteMe 协同工作的方式。为了扩展一个片段,您必须完全按照它的定义编写初始化程序。当然,这看起来很明显,但是当您看到不同片段的弹出菜单时,您可能会认为可以选择它们,但只有在您已经完全按照定义编写片段初始化程序时它才有效。

因此,当一个片段被称为“html5”时——正如我的问题所示——写一个额外的左括号(<)会导致它停止工作。它无法扩展。

UltiSnips 从弹出菜单中展开片段的正确方法

UltiSnips 错误的方式从弹出菜单中展开片段


另外,不要忘记查看Siegfried Gevatter配置。无法同时使用Tab键导航到弹出菜单和展开片段。

PS如果通过弹出菜单导航可以更改整个单词(包括尖括号),而不仅仅是成功的,那就太好了。这个功能在我看到的大多数其他编辑器中都是这样工作的,这可能就是我一开始无法发现问题的原因。

于 2020-01-22T18:16:55.837 回答