如何让vim对文件名执行正常(bash like)选项卡完成?

Eri*_*son 277 vim

当我在vim中打开一个新文件并使用tab完成时,它会完成整个文件名而不是像bash那样进行部分匹配.有没有选项使这个文件名选项卡完成工作更像bash?

mic*_*ael 403

我个人用

set wildmode=longest,list,full
set wildmenu
Run Code Online (Sandbox Code Playgroud)

当您键入第一个选项卡时,命中将尽可能完成,第二个选项卡命中将提供一个列表,第三个和后续选项卡将循环完成选项,这样您就可以在没有其他键的情况下完成文件

bash就像是

set wildmode=longest,list 
Run Code Online (Sandbox Code Playgroud)

但是充分非常方便

  • @NehaKaranjkar我建议维护一个dotfiles存档,以便在新环境中轻松部署 (6认同)
  • 我希望这是 vim 中的默认行为。我虽然在看到这篇文章之前无法完成完整的选项卡完成。 (2认同)
  • 有没有办法在结果很少的时候开始满?像`set wildmode = longest,5full,list`之类的东西.很多结果很多都没用,但很少有用.它将是完美的,例如"仅当完成适合一行屏幕时显示完整" (2认同)

wey*_*amz 21

最接近Bash完成的行为应该是

set wildmode=longest:full,full
Run Code Online (Sandbox Code Playgroud)

键入几个字符后,按一次选项卡将显示所有可用的匹配项wildmenu.这与迈克尔的答案不同,后者在命令行下面打开了一个类似quickfix的窗口.

然后,您可以继续键入其余字符,或再次按Tab键以自动完成第一场比赛并围绕它进行圈选.

  • 我想我更喜欢这种方式。 (2认同)

Amj*_*ith 6

如果您不想设置wildmenu,则可以在要打开文件时始终按Ctrl+ L.Ctrl+ L将完成文件名,如bash完成.

  • 我的bash _does_就像这样.`<Tab>`尽可能明确地完成当前字符串(如Vim中的`CTRL-L`)和`<Tab> <Tab>`显示可能的匹配列表(如Vim中的`CTRL-D`) . (2认同)

小智 6

除了建议的wildmode/wildmenu之外,vim还提供了使用Ctrl+ 显示所有可能的完成的选项d.对于在vim中搜索不同的自动完成选项时遇到此问题的一些用户可能会有所帮助.


Mik*_*ike 5

我假设您正在 Vim 中通过Ctrl+使用自动完成功能N来搜索当前缓冲区。当您使用此命令时,您将获得解决方案列表;只需重复该命令即可转到列表中的下一项。所有自动完成命令也是如此。当它们填满整个单词时,您可以继续浏览列表,直到找到您想要使用的单词。

这可能是一个更有用的命令:Ctrl+ P。唯一的区别是Ctrl+P在缓冲区中向后搜索,而Ctrl+N向前搜索...实际上,它们都将提供具有相同元素的列表,并且它们可能只是以不同的顺序出现。