我一直使用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使用特定的命令进行搜索,因此我可以将其配置为包括隐藏的文件/文件夹。
答案 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'
选项或类似选项。