Vim 缓冲区名称自动完成在第一个目录后不起作用

Vim 缓冲区名称自动完成在第一个目录后不起作用

我对 Vim 缓冲区名称的自动完成行为存在疑问。

目标软件/操作系统

我在 Windows 10 上使用不带插件的 gVim

我想做什么

假设我们有一个如下文件树:

  • A
  • 比 >
    • C
    • d
    • e0
    • 響 >
      • F
      • G

当我搜索缓冲区名称时,这是我想要的行为:

  • :b <Tab> => 列出“a”“b/”或 cwd 中的每个文件,如果可能的话,不是所有缓冲区名称
  • :b b<Tab> =>:b b/
  • :b b/<Tab>=> 列表“c”“d”“e0”“e/”
  • :b a/e<Tab>=> 列出“e0”“e/”,以便我可以选择正确的路径
  • :b a/e/<Tab>=> 列出“f/”“g/”等等

我尝试过

set wildmode=longest:list, full

如果我想查找文件“Core/types.h”,并且我有文件“Care/file.h”:

  • :b C<Tab>=> 当我只想拥有一个级别的信息时,它会打印每个文件,例如“Core /”和“Care /”,而不是“Core / types.h”和“Care / files.h”,但这是不太重要的问题
  • :b Co<Tab>=> :b Core/(这太好了!)
  • :b Core/t<Tab>=> 什么都不做!(为什么它不将“Core/t”作为通配符?)
  • :b ty=> :b Core/types.h (这太好了!)

可能是因为我打开所有缓冲区的方式?我正在gvim **/*加载所有源文件。

基本上,问题是自动完成功能在目录之后不起作用,就像:b ty<Tab>有效但无效一样:b Core/ty<Tab>

希望我说清楚了并且这个问题有解决办法:)

答案1

我可以使用 Windows 8.1 上的 Vim 8.0.2 重现此问题。

这似乎与路径中的反斜杠有关。如果我将 Vim 重新配置为使用正斜杠,则补全将按预期工作:

:set shellslash

请报告此错误,请参阅:help bugs。基本上,在错误追踪器或直接在vim_dev 邮件列表

相关内容