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

时间:2018-10-06 10:05:22

标签: vim

我一直使用junegunn/fzf.vim快速在vim中查找(隐藏和非隐藏)文件。我just found表示也可以设置

path=.,**

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

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

~/testdir
❯ tree -a
.
|-- .hidden-folder
|   |-- some-hidden-file
|   `-- some1-hidden
|       `-- some2-hidden
|           `-- deeply-hidden-file
|-- some-file
`-- some-folder
    `-- some1
        `-- some2
            `-- deep-file

6 directories, 4 files

并打开vim some-file:find deeply-hidden找不到文件。我认为这是因为自.hidden-folder被发现以来,它就在:find deep-file内部。

是否可以通过某种方式将**设置为包括隐藏文件夹?也许也可以告诉vim使用特定的命令进行搜索,因此我可以将其配置为包括隐藏的文件/文件夹。

1 个答案:

答案 0 :(得分:3)

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

set path+=.some_dir
set path+=.some_other_dir

虽然肯定是对当前情况的一种改进,但用“更好”的算法代替当前算法(例如 iterative deepening depth-first search)只能在Vim的C源代码中完成,因为遗憾的是Vim没有公开'filesearchprg'选项或类似选项。