我如何使Vim做正常的(Bash-like)标签完成文件名?

当我在Vim中打开一个新文件时,我使用制表符完成,它完成了整个文件名,而不是像Bash那样做部分匹配。是否有一个选项使这个文件名选项卡完成工作更像Bash?

74395 次浏览

我假设你在Vim中通过Ctrl + N使用自动补全来搜索当前缓冲区。当你使用这个命令时,你会得到一个解决方案的列表;只需重复该命令转到列表中的下一项。对于所有自动完成命令也是如此。当他们填写整个单词时,您可以继续在列表中移动,直到到达您想要使用的单词。

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

尝试使用:set wildmenu。除此之外,我不知道你到底想干什么。

哦,是的,也许可以试试这个链接:链接

我个人使用

set wildmode=longest,list,full
set wildmenu

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

Bash-like是正确的

set wildmode=longest,list

但是全包很方便。

如果你不想设置野生菜单,当你想打开一个文件时,你总是可以按Ctrl + lCtrl + l将像Bash补全一样完成文件名。

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

set wildmode=longest:full,full

输入几个字符后,按一次tab键将给出wildmenu中所有可用的匹配项。这与迈克尔的答案不同,后者在命令行下面打开一个类似快速修复的窗口。

然后你可以继续输入剩下的字符,或者再次按tab键自动完成第一个匹配,然后圈起来。

除了建议的wildmode/wildmenu, Vim还提供了通过使用Ctrl + D来显示所有可能的补全选项。对于像我一样在Vim中搜索不同的自动补全选项时偶然遇到这个问题的用户来说,这可能会有所帮助。

set wildmode=longest:full给你一个类似bash的补全:

  • 单行建议
  • Tab只完成确定的内容
  • 右/Ctrl-n |左/Ctrl-p选择建议。

预览描述的功能

来自帮助:

If you prefer the <Left> and <Right> keys to move the cursor instead
of selecting a different match, use this:
:cnoremap <Left> <Space><BS><Left>
:cnoremap <Right> <Space><BS><Right>