当我在 Vim 中打开一个新文件并使用制表符完成时,它会完成整个文件名,而不是像 Bash 那样进行部分匹配。有没有一个选项可以让这个文件名选项卡完成更像 Bash?
我个人使用
set wildmode=longest,list,full
set wildmenu
当您键入第一个选项卡时,它将尽可能完成。第二个标签点击将提供一个列表。第三个和后续选项卡将循环显示完成选项,因此您无需其他键即可完成文件。
bash-like 只是
set wildmode=longest,list
不过满了就很得心应手了。
最接近 Bash 完成的行为应该是
set wildmode=longest:full,full
键入几个字符后,按一次 Tab 将给出 wildmenu
中可用的所有匹配项。这与 Michael 的答案不同,后者在命令行下方打开了一个类似 quickfix 的窗口。
然后您可以继续输入其余字符或再次按 Tab 以自动完成第一个匹配项并围绕它圈出。
除了建议的 wildmode/wildmenu 之外,Vim 还提供了使用 Ctrl + D 显示所有可能完成的选项。这对于像我一样在 Vim 中搜索不同的自动完成选项时偶然发现这个问题的一些用户可能会有所帮助。
如果您不想设置通配菜单,您可以在要打开文件时随时按 Ctrl + L。 Ctrl + L 将完成文件名,如 Bash 完成。
<Tab>
尽可能明确地完成当前字符串(如 Vim 中的 CTRL-L
),而 <Tab><Tab>
显示可能匹配的列表(如 Vim 中的 CTRL-D
)。
我假设您在 Vim 中通过 Ctrl + N 使用自动完成功能来搜索当前缓冲区。当你使用这个命令时,你会得到一个解决方案列表;只需重复该命令即可转到列表中的下一项。所有自动完成命令也是如此。当他们填写整个单词时,您可以继续浏览列表,直到找到您想要使用的单词。
这可能是一个更有用的命令:Ctrl + P。唯一的区别是 Ctrl + P 在缓冲区中向后搜索,而 Ctrl + N 向前搜索......实际上,它们都将提供具有相同元素的列表,并且它们可能只是以不同的顺序出现。
set wildmode=longest:full
为您提供类似于 Bash 的补全:
单行建议
选项卡仅完成确定的内容
右/Ctrl-n |左/Ctrl-p 选择建议。
https://i.stack.imgur.com/upRoT.gif
从帮助:
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>
set wildmode=longest,5full,list
之类的东西。大量结果完全是无用的,但很少有非常方便。像“仅当完成适合一行屏幕时才显示完整”之类的东西将是完美的