vim path var, исключая dirs из ** соответствия - PullRequest
7 голосов
/ 17 декабря 2008

Одна из моих любимых функций vim - возможность делать

set path=/my/project/root/**

и затем используйте

:find SomeClassFile.java

Единственная проблема в том, что у меня есть несколько сгенерированных каталогов на этом уровне, которые я не могу переместить и хочу исключить из таких запросов. Я не могу понять, как исключить эти каталоги. Кто-нибудь знает, как / если это можно сделать?

Ответы [ 5 ]

3 голосов
/ 17 декабря 2008

Я почти уверен, что вы не можете исключить вещи из "**" поиска. Вместо этого вы можете указать все подкаталоги ниже той, в которую не включен сгенерированный код, например

set path=/my/project/root/src/**,/my/project/root/com/**,/my/project/root/foo/**
2 голосов
/ 17 декабря 2008

Я не знаю, как использовать синтаксис vim, но вы можете создать себе файл .vimrc.proj (мое соглашение об именах) и заполнить его всем, что вы хотите, относящимся к этому проекту, а затем «получить» его.

Итак, вы должны иметь следующее в /my/project/root/.vimrc.proj (на примере Пола Томблина):

set path = / my / project / root / src / **, / my / project / root / com / **, / my / project / root / foo / **

А потом изнутри vim:

: источник /my/project/root/.vimrc.proj

По сути, после того, как вы настроите файл, вам потребуется примерно столько же нажатий клавиш, чтобы задать путь к проекту. Конечно, вы также можете разместить там другие специфичные для проекта настройки, такие как сопоставления cscope или что-то еще.

По общему признанию, это оставляет «пропадание» в файловой системе, но множество других сред создают файлы проекта.

1 голос
/ 13 октября 2017

Я думаю, что вы можете исключить вещи из "**" поиска, установив wildignore переменную.

например:

set wildignore+=*.swp,*.bak,*.class

или что-то связать это:

set wildignore+=*/node_modules/*,*/public/lib/*

Теперь, если вы используете команду find, она не будет искать в этих каталогах.

1 голос
/ 18 декабря 2008

Об этом следует позаботиться с помощью параметра & wildignore. Однако, AFAIK, это не так. Я выдал сообщение об ошибке по этой теме, но с тех пор я не видел ни одного патча.

Между тем, я разработал функцию, похожую на глобальный путь, которая игнорирует пути, содержащие нежелательные шаблоны (например, / CVS / например), и я использую эту функцию в моих командах, похожих на поиск.

0 голосов
/ 18 декабря 2008

Если вы работаете в Unix-подобной системе, вы можете использовать обратные галочки для запуска сценария командной строки, например:

:e `find . -name foo.java -print`

Так что вы можете написать свой собственный скрипт, чтобы исключить любые каталоги, которые вы хотите. Я сделал то же самое, чтобы исключить каталоги .svn из :grep.

См. :h backtick-expansion в vim для получения дополнительной информации.

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