如何使用 path=.,** 和 :find 搜索隐藏目录/文件?

nik*_*aas 5 vi vim neovim

我一直在使用junegunn/fzf.vim在 vi​​m 中快速查找(隐藏和非隐藏)文件。我刚刚发现还可以设置

\n\n
path=.,**\n
Run Code Online (Sandbox Code Playgroud)\n\n

并使用:find some-file实现几乎相同的功能,除了模糊搜索。由于我很少使用模糊搜索并且更喜欢使用尽可能少的插件(尽管它仍然很多),所以我正在考虑放弃 fzf.vim 并完全切换到 path/:find-approach。

\n\n

也就是说,这里缺少一个重要的功能。据我所知,path不包括隐藏目录。例如,给定以下目录结构

\n\n
~/testdir\n\xe2\x9d\xaf tree -a\n.\n|-- .hidden-folder\n|   |-- some-hidden-file\n|   `-- some1-hidden\n|       `-- some2-hidden\n|           `-- deeply-hidden-file\n|-- some-file\n`-- some-folder\n    `-- some1\n        `-- some2\n            `-- deep-file\n\n6 directories, 4 files\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后打开vim some-file:find deeply-hidden没有找到该文件。我认为这是因为它在一个.hidden-folder因为:find deep-file中找到的。

\n\n

有什么办法我可以设置**为包含隐藏文件夹吗?也许也可以告诉 vim 使用特定命令进行搜索,这样我就可以将其配置为包含隐藏文件/文件夹。

\n

rom*_*inl 3

用于搜索文件的内置例程使用“深度优先搜索”算法,这使得它在许多情况下效率很低。set path=.,**因此可能有点过多,因为它会强制 Vim 在切换到下一个目录之前查看每个子目录。它可能在某些情况下有效(正如您所链接的我的答案中所强调的那样),但您应该知道它的'path'目的是作为特定目录的列表,并且**在那里存在某种程度的失败。浏览隐藏目录的“正确”方法:find是将它们添加到'path'

set path+=.some_dir
set path+=.some_other_dir
Run Code Online (Sandbox Code Playgroud)

虽然这肯定会对当前情况有所改进,但用“更好”的算法替换当前算法(例如 迭代加深深度优先搜索)只能在 Vim 的 C 源代码中完成,因为 Vim 没有公开选项'filesearchprg'或类似的选项,很遗憾。