Как искать скрытые каталоги / файлы с помощью path =., ** и: find? - PullRequest
0 голосов
/ 06 октября 2018

Я использую junegunn / fzf.vim для быстрого поиска (скрытых и не скрытых) файлов в vim.Я только что обнаружил , что также можно установить

path=.,**

и использовать :find some-file для достижения почти того же, кроме нечеткого поиска.Поскольку я редко использую нечеткий поиск и предпочитаю использовать как можно меньше плагинов (хотя это все еще тонна), я думаю о том, чтобы отказаться от fzf.vim и полностью переключиться на путь /: find-подхода.

Тем не менее, здесь мне не хватает одной важной особенности.Насколько я могу судить, 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 голосов
/ 06 октября 2018

Встроенная процедура, используемая для поиска файлов, использует алгоритм «поиск в глубину», что делает его довольно неэффективным во многих сценариях.set path=.,**, таким образом, может быть немного чрезмерным, так как это заставит Vim заглянуть в каждый подкаталог перед переключением на следующий каталог. может работать в некоторых случаях (как подчеркивалось в моем ответе, на который вы ссылались), но вы должны знать, что 'path' задуман как список определенных каталогов, а наличие ** в некоторой степени побеждает его точку зрения.,«Правильный» способ заставить :find проходить через скрытые каталоги - это добавить их в 'path':

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

Хотя это, безусловно, улучшит текущую ситуацию, заменив текущий алгоритм на«лучший» (скажем, итеративный углубленный поиск в глубину ) может быть выполнен только в C-источнике Vim, поскольку Vim, к сожалению, не предоставляет опцию 'filesearchprg' или аналогичную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...