запретить vim grep открывать первый соответствующий файл

#vim #grep

#vim #grep

Вопрос:

Итак, возимся с плагином EasyGrep.vim, пытаясь привести его в состояние, которое меня устраивает. Я использую его для рекурсивного поиска в проекте Rails. У меня почти получилось так, как я хочу, это пример команды grep, которую выполняет мой модифицированный EasyGrep:

 :grep -R -i  --include=*.rb --include=*.rbw --include=*.gem --include=*.gemspec --include=[rR]akefile --include=*.erb --include=*.rhtml SEARCH_WORD .
  

Который находит слово под курсором и открывает результаты поиска в quicklist.

Единственная проблема в том, чтоgrep, похоже, автоматически открывает файл, содержащий первое совпадение, в текущем буфере, чего я не хочу, чтобы это делалось, потому что тогда я теряю файл, на который я только что смотрел.

Кто-нибудь знает, как я могу предотвратить такое поведение? Или, по крайней мере, хитрый обходной путь, который повторно открывает файл, из которого я искал?

: vimgrep — это не вариант — он слишком медленный.

Ответ №1:

От :help :grep :

Just like ":make", but use 'grepprg' instead of 'makeprg' and 'grepformat' instead of 'errorformat'.

От :help :make :

If [!] is not given the first error is jumped to.

Итак: :grep!

Комментарии:

1. Что касается «взломанного обходного пути» (здесь это необязательно, но все еще может быть вам полезно), :help CTRL-^

2. легенда! Я думал, что id уже пробовал это (; grep!), Но, видимо, тогда было что-то еще, потому что теперь это работает!

3. Я бы посоветовал не вставлять текст справки vim. Это первое рекламное объявление является прекрасным примером того, насколько бесполезным оно может быть. Определение grep в терминах make не поможет кому-либо, если они не знают, как работает make. :grep! было бы достаточно простым и полным ответом. Хотя я должен согласиться с OP, что это немного шатко. Иногда просто: grep не открывает первую ошибку. О, и это ОЧЕНЬ сбивает с толку, что они называются «ошибки» вместо «совпадений».

4. Я согласен с @Milimetric; эта первая строка скорее сбивает с толку, чем помогает.

Ответ №2:

Добавьте это в свой .vimrc:

     let g:EasyGrepOpenWindowOnMatch=0
  

EasyGrep имеет множество опций, которые могут управлять его поведением. Введите :GrepOptions , чтобы получить список всех этих файлов.