vim 如何搜索隐藏的目录/文件与路径=.,**和:find?

bvhaajcl  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(208)

我一直在使用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使用特定的搜索命令,这样我就可以配置它来包含隐藏的文件/文件夹。

k5hmc34c

k5hmc34c1#

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

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

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

ybzsozfc

ybzsozfc2#

首先,您可能需要path=.,,**而不是path=.,**.是编辑文件的目录,空字符串(,,之间)是当前文件夹-编辑器正在运行的位置。
至于你的问题,就像@romainl在另一个答案中说的那样,不幸的是,你不能设置一个选项来使**递归到隐藏目录中。

  • 但是 *,你可以通过设置path+=**/.*/**,**/.*/**/.*/**来解决这个问题。这应该有助于:finddeeply-hidden-file,在您的情况下。这是一个“黑客”,因为它找到a/b/.c/d/.e/f/g,但不会找到a/.b/.c/d/.e/f,例如,因为它是在3级隐藏目录下。因此,要使其工作,您需要添加path+=**/.*/**/.*/**/.*/**...你会看到这会使搜索速度变慢。
    NB只在NeoVim中尝试过,但在Vim中也应该可以工作。

相关问题