【问题标题】:Word / Code Completion in VIMVIM 中的单词/代码补全
【发布时间】:2009-06-28 15:10:52
【问题描述】:

我知道我可以通过CTRL+NCTRL+P 完成单词,并通过带有CTRL+X CTRL+O 的omnifunc 完成代码。我还尝试了Supertab(非常好),因为我习惯了 TAB 完成。这一切都很好。我想在打字时查看可能的匹配项,所以我也尝试了autocomplpop.vim,女巫就是这样做的。

不过,我想完成的是,将两者结合起来并稍作改动:我希望在我输入时看到建议弹出(就像autocompop)但是当我使用TAB 单词应该扩展到最大的共同匹配

foo bar testor booze test baz teter
te<TAB>

我在第二行输入te后,弹出窗口应该提示testtetertestor

当我按下TAB 时,它应该什么都不做,因为没有比te 更多的共同点。在我输入额外的s 并按TAB 后,它应该将tes 扩展为test(因为它是最小的共同点)并在第二个TAB 之后扩展为testor

编辑:我尽量说得更清楚...

  • te&lt;TAB&gt;
    • 应该什么都不做,因为“我们”不知道是 't' (teter) 还是 's' (test, testor) 应遵循。
  • tes&lt;TAB&gt;
    • 应该扩展到test(因为这对测试和测试者都有效,并且teter不再是可能的匹配项)。
  • test&lt;TAB&gt;
    • 应扩展为testor(仅可能匹配)。

好吧,建议弹出窗口只是奖励,但我真的很想看到TAB 的行为。希望我在这里没有深奥,你可以帮助我使用一些脚本技巧或插件来驯服 VIM 来做到这一点。

【问题讨论】:

  • “test”不是“test”的可能匹配项吗?这就是 bash 对待它的方式...(除了第三种情况,您的示例反映了 bash 的完成规则...)

标签: vim code-completion


【解决方案1】:
:set completeopt=longest,menu,preview

也许?

(我不确定你的说法是否

“当我按TAB时,它应该什么都不做,因为没有比te更共同的地方”

和你后面的说法有冲突

“在第二个 TAB 之后测试者。”

在我看来,在那一点上没有比“测试”更多的共同点...除非您的意思是第一个选项卡进入最长的共同点,然后随后的选项卡循环通过其他匹配项,在这种情况下你追求的是我上面的……)

【讨论】:

  • 如果我使用:set completeopt=longest,menu,preview 并在te 之后按tab,它会完成到testor。那不是我想要完成的。
  • 超级用户上的某个人也有类似的问题 (superuser.com/questions/117490/…),他们说 SuperTab 搞砸的时间最长。您是否尝试禁用超级标签?
  • :set completeopt=longest,menu就是你想要的。
猜你喜欢
  • 2011-12-08
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
相关资源
最近更新 更多