Vim: Custom grep находит файлы, но не открывает их - PullRequest
1 голос
/ 20 марта 2019

В моем vimrc моя программа grep определена следующим образом:

set grepprg=grep\ -R\ --exclude=*~\ --exclude=*.swp\ --exclude-dir=vendor\ --exclude-dir=node_modules\ --exclude=tags\ --exclude=tags.vendor

Когда я выполняю поиск, он просто выводит список результатов, но когда я делаю :copen, хотя он перечисляет файлы, я не могу их открыть.

1 Ответ

2 голосов
/ 20 марта 2019

Список быстрых исправлений / местоположений заполняется на :grep в соответствии с разделенными запятыми форматами, указанными в 'grepformat'.

'grepformat', по умолчанию %f:%l:%m,%f:%l%m,%f %l%m.Здесь %f - это имя файла, %l - строка, а %m - фактически совпадающая строка.Каждая строка вывода grep сопоставляется с каждым форматом до тех пор, пока один из них не будет успешным.

Если ни один из форматов не соответствует, строка будет добавлена ​​в список быстрых исправлений как есть, как в вашем случае.Это будет просто текст, и Vim не знает, как обрабатывать эту строку.

По умолчанию моя версия grep BSD возвращает строки, подобные file: message для grep -R.Итак, принимая первый формат %f:%l:%m, номер строки отсутствует.Глядя на страницу руководства, вот для чего нужен флаг -n.

Итак, попробуйте это вместо этого:

set grepprg=grep\ -nR\ --exclude=*~\ --exclude=*.swp\ --exclude-dir=vendor\ --exclude-dir=node_modules\ --exclude=tags\ --exclude=tags.vendor

Впоследствии :silent grep foo . | copen должно работать как положено!

(Psssh, флаг -n также упоминается в :h 'grepprg'.:)

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