我一直在使用junegunn/fzf.vim在 vim 中快速查找(隐藏和非隐藏)文件。我刚刚发现还可以设置
\n\npath=.,**\nRun Code Online (Sandbox Code Playgroud)\n\n并使用:find some-file实现几乎相同的功能,除了模糊搜索。由于我很少使用模糊搜索并且更喜欢使用尽可能少的插件(尽管它仍然很多),所以我正在考虑放弃 fzf.vim 并完全切换到 path/:find-approach。
也就是说,这里缺少一个重要的功能。据我所知,path不包括隐藏目录。例如,给定以下目录结构
~/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\nRun Code Online (Sandbox Code Playgroud)\n\n然后打开vim some-file,:find deeply-hidden没有找到该文件。我认为这是因为它在一个.hidden-folder因为:find deep-file中找到的。
有什么办法我可以设置**为包含隐藏文件夹吗?也许也可以告诉 vim 使用特定命令进行搜索,这样我就可以将其配置为包含隐藏文件/文件夹。
用于搜索文件的内置例程使用“深度优先搜索”算法,这使得它在许多情况下效率很低。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'或类似的选项,很遗憾。