当我在 Vim 中打开一个新文件并使用制表符完成时,它会完成整个文件名,而不是像 Bash 那样进行部分匹配。是否有一个选项可以使此文件名选项卡补全工作更像 Bash?
我个人使用
set wildmode=longest,list,full
set wildmenu
当您键入第一个 Tab 键时,它将尽可能完成。点击第二个选项卡将提供一个列表。第三个和后续选项卡将循环显示完成选项,以便您无需进一步按键即可完成文件。
类似 Bash 就可以了
set wildmode=longest,list
但是完整的非常方便。
最接近 Bash 完成的行为应该是
set wildmode=longest:full,full
输入几个字符后,按一次 Tab 键将给出
wildmenu
中可用的所有匹配项。这与 Michael 的答案不同,后者在命令行下打开一个类似快速修复的窗口。
然后您可以继续输入其余字符或再次按 Tab 键以自动完成第一个匹配项并围绕它圈出。
除了建议的 Wildmode/wildmenu 之外,Vim 还提供了使用 Ctrl + D 显示所有可能的补全的选项。这对于像我一样在 Vim 中搜索不同自动完成选项时偶然发现这个问题的用户可能会有所帮助。
如果您不想设置野生菜单,您可以在打开文件时随时按 Ctrl + L。 Ctrl + L 将像 Bash 补全一样完成文件名。
我假设您通过 Ctrl + N 在 Vim 中使用自动完成功能来搜索当前缓冲区。当您使用此命令时,您将获得解决方案列表;只需重复该命令即可转到列表中的下一项。所有自动完成命令也是如此。当它们填写整个单词时,您可以继续浏览列表,直到找到您想要使用的单词。
这可能是一个更有用的命令:Ctrl + P。唯一的区别是 Ctrl + P 在缓冲区中向后搜索,而 Ctrl + N 向前搜索...实际上,它们都将提供包含相同元素的列表,并且它们可能只是出现在不同的顺序。
运行这些:
:set nocompatible
:set wildmenu
:set wildmode=longest:full
longest:full
为您提供类似 Bash 的补全:
来自帮助:
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>