我对 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 邮件列表。