vim: как получить путь для поиска вверх и вниз по дереву каталогов - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь заставить vim gf работать с включаемыми файлами. Если путь локальный, все работает нормально. Но если ему нужно выполнить поиск по дереву каталогов и по указанному дереву, он не сможет найти файл.

То, что я хочу, легко продемонстрировать:

cd /some/src
mkdir -p a/long/path/down
mkdir -p a/long/path/again
touch a/long/path/down/util.h
echo '#include "a/long/path/down/util.h"' > a/long/path/again/file.cc
cd a/long/path/again
vim file.cc

В этом примере при компиляции я бы использовал -I/some/src, чтобы при компиляции file.cc был найден a/long/path/down/util.h.

Теперь в сеансе vim для file.cc, где я нахожусь в каталоге a/long/path/down/ (обратите внимание на cd выше), я делаю gf на пути включения a/long/path/down/util.h. Какая спецификация path мне нужна, чтобы заставить это работать? Я предполагал, что это все, что мне нужно:

set path+=**

Все же я получаю:

E447: Can't find file "a/long/path/down/util.h" in path

Разве ** не должен заставить его искать вверх, вверх, вверх ... для a, а затем обнаруживать, что a/long/path/down/util.h есть?

В моем проекте у меня может быть несколько версий src/ в /some, поэтому я хочу, чтобы поиск был относительным с pwd. То есть set path+=/some/src не подходит для меня.

Спасибо!

1 Ответ

0 голосов
/ 01 сентября 2018

Вы ищете ;, а не **.

set pah+=**;

делает то, что вы хотите, но это будет довольно медленно, потому что Vim будет «вверх и вниз, рекурсивно», затем «вверх и вниз, рекурсивно» и т. Д., Ища ваш файл в невероятно большом количестве каталогов.

Одним из возможных улучшений может быть использование «стоп-каталога»:

set path+=**;/path/to/a/long/path

чтобы Vim не искал ваш файл на всем вашем жестком диске. Чем ближе стоп-каталог, тем полезнее path.

Лучшим улучшением было бы добавление определенных каталогов в path:

set path+=/path/to/a/long/path/down

, который очень хорошо работает с проектами / средами / языками, которые требуют стандартных структур каталогов. Это может быть автоматизировано для каждого типа файла или для каждого пути.

Все довольно четко объяснено в :help file-searching и :help 'path'.

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