如何让 Vim 对文件名执行正常(类似 Bash)的制表符补全?

问题描述 投票:0回答:7

当我在 Vim 中打开一个新文件并使用制表符完成时,它会完成整个文件名,而不是像 Bash 那样进行部分匹配。是否有一个选项可以使此文件名选项卡补全工作更像 Bash?

vim
7个回答
451
投票

我个人使用

set wildmode=longest,list,full
set wildmenu

当您键入第一个 Tab 键时,它将尽可能完成。点击第二个选项卡将提供一个列表。第三个和后续选项卡将循环显示完成选项,以便您无需进一步按键即可完成文件。

类似 Bash 就可以了

set wildmode=longest,list 

但是完整的非常方便。


39
投票

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

set wildmode=longest:full,full

输入几个字符后,按一次 Tab 键将给出

wildmenu
中可用的所有匹配项。这与 Michael 的答案不同,后者在命令行下打开一个类似快速修复的窗口。

然后您可以继续输入其余字符或再次按 Tab 键以自动完成第一个匹配项并围绕它圈出。


13
投票

除了建议的 Wildmode/wildmenu 之外,Vim 还提供了使用 Ctrl + D 显示所有可能的补全的选项。这对于像我一样在 Vim 中搜索不同自动完成选项时偶然发现这个问题的用户可能会有所帮助。


9
投票

如果您不想设置野生菜单,您可以在打开文件时随时按 Ctrl + LCtrl + L 将像 Bash 补全一样完成文件名。


5
投票

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

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


2
投票

运行这些:

:set nocompatible
:set wildmenu
:set wildmode=longest:full

longest:full
为您提供类似 Bash 的补全:

  • 单行建议
  • 仅填写确定的内容
  • 右/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>

0
投票

尝试使用

:set wildmenu
。除此之外,我不确定你到底在尝试什么。

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

© www.soinside.com 2019 - 2024. All rights reserved.