Добавка в .vimrc
Dec. 11th, 2019 11:00 amНаконец-то я настроил при использовании grep из vim игнорировать .svn
set grepprg=grep\ -n\ --exclude=tags\ --exclude=TAGS\ --exclude-dir=.svn\ $*\ /dev/null
Собственно, переменную окружения GREP_OPTIONS, через которую я работал несколько лет, объявили deprecated (но пока не выпилили). А во всех советах игнорировали часть аргументов, в результате чего навигация по найденному из vim не работала. В таком виде - работает. Осталось .git туда же добавить, но это по необходимости.
set grepprg=grep\ -n\ --exclude=tags\ --exclude=TAGS\ --exclude-dir=.svn\ $*\ /dev/null
Собственно, переменную окружения GREP_OPTIONS, через которую я работал несколько лет, объявили deprecated (но пока не выпилили). А во всех советах игнорировали часть аргументов, в результате чего навигация по найденному из vim не работала. В таком виде - работает. Осталось .git туда же добавить, но это по необходимости.
no subject
Date: 2019-12-11 10:02 am (UTC)no subject
Date: 2019-12-11 10:39 am (UTC)no subject
Date: 2019-12-11 11:09 am (UTC)Равно как и для множества других интересных ситуаций.
Правда, мне, похоже в каждой из своих книг делать разный grepprg, чтобы исключить из поиска всякие генерируемые форматы, оставить только исходник. Но там все равно везде есть .lvimrc.
Принципиально веть тут не имя директории в --exclude, а то, какие еще параметры надо выставить.
Например /dev/null в хвосте.
no subject
Date: 2019-12-11 11:22 am (UTC)no subject
Date: 2019-12-11 11:43 am (UTC)Позволяет создать в каждом поддереве свой локальный файл конфигурации, который будет читаться vim-ом если он запускается внутри этого поддерева.
Я его себе поставил в основном ради конфигурации спелл-чекера, чтобы в каждом сеттинге иметь собственные локальные словари, ну и чтобы язык правильный автоматически включался.
Параметр $* тут значит то же самое, что в шелловских скриптах - в смысле "на это место будут подставлы все аргументы". При этом это не шелловский синтаксис, а вимовский. Описан, кстати в :help grepprg.
А /dev/null там нужен для того, чтобы если вдруг кто-то нечаянно наберет :grep без параметров, у него бы все нафиг не подвисло. Потому что по умолчанию grep будет ждать текста со стандартного ввода. Соотвественно, чтобы программа вовремя завершилась, у нее в аргуммента должен быть хоть один файл. Поэтому, туда добавлен в конец заведомо пустой /dev/null.
И еще - если у нас в командной строке grep указан ровно один файл, он не будет в выводе даже с -n сопровождать найденную строку именем файла (а не только номером строки). А если два и более - будет. Поэтому vim сумеет правильно найти куда курсор ставить. Независимо от числа файлов, в которых попросил искать пользователь. Того же эффекта можно в GNU grep добиться с помощью -H о чем честно рассказано в хелпе на grepprg, но /dev/null во-первых убивает двух зайцев разом, во-вторых работает с бо́льшим количеством разных grep.
no subject
Date: 2019-12-11 03:22 pm (UTC)git --no-pager grep. Который сразу из коробки работает рекурсивно и игнорирует .git и всё, что не под версионным контролем.no subject
Date: 2019-12-11 03:27 pm (UTC)no subject
Date: 2019-12-11 03:30 pm (UTC)no subject
Date: 2019-12-11 03:49 pm (UTC)git grep -OvimПричём
gitзнает проvimи передаёт ему параметр поиска:vim /search_string, так чтоvimсразу встаёт на нужную строку, а по нажатию n ищет дальше.PS. Аналогично
gitзнает проless.no subject
Date: 2019-12-12 04:41 am (UTC)no subject
Date: 2019-12-12 04:44 am (UTC)no subject
Date: 2019-12-12 06:49 am (UTC)Решение, предложенное Белявским - универсально. Применимо к практически любой системе управления версиями. У меня, правда, ни разу не возникало проблем с false positives от
.fslckout
no subject
Date: 2019-12-11 03:51 pm (UTC)diff -ru --speed-large-files -x CVS -x .git -x .hg -x .svn -x '*.py[co]' -x __pycache__no subject
Date: 2019-12-12 07:00 am (UTC)no subject
Date: 2019-12-12 11:56 am (UTC)Опция
-rозначает "сравнивать рекурсивно".Опция
-uозначает "выдавать unified context diff".no subject
Date: 2019-12-12 12:09 pm (UTC)no subject
Date: 2019-12-12 12:36 pm (UTC)no subject
Date: 2019-12-12 12:38 pm (UTC)no subject
Date: 2019-12-11 04:21 pm (UTC)Ну и svn тоже пора на помойку истории.
no subject
Date: 2019-12-12 07:00 am (UTC)Хотя для типовых процессов git, конечно, удобнее.