Когда я бегу grep "keyword" -n
и получаю следующий список результатов:
a/b/c:10: keyword
a/b/c:70: keyword
a/b/d:50: keyword
Как я могу открыть один из файлов (скажем, 2-й в списке) в строке, которую он нашел?
Теперь я просто копирую вывод, используя мою мышь, и копирую его после, vim
а затем добавляю +
с номером строки, которую копирую. (имеется в виду, что я пишу, vim a/b/c +70
используя копию мыши, чтобы получить имя файла, и другую копию мыши, чтобы получить номер строки [или я просто копирую ее вручную, когда она достаточно короткая))
Есть ли способ сделать это с помощью сочетания клавиш?
command-line
vim
grep
CIsForCookies
источник
источник
echo a/b/c:70: keyword | awk '{print $1}' | sed 's,:$,,' | sed 's,:, +,' | xargs vim && reset
.Ответы:
Две вещи:
Вим имеет некоторую поддержку
grep
.Если вы открываете Vim и делаете
:grep keyword ...
, Vim заполняет список быстрых исправлений результатами и переходит к первому файлу. Затем вы можете перейти к n- й записи быстрого исправления с помощью:cc n
(и других команд).Вы можете заполнить вышеупомянутый список быстрых исправлений, используя вывод grep:
А затем используйте быстрые команды навигации, упомянутые выше.
Либо проще, чем играть вручную с выводом grep.
В качестве альтернативы (2) вы можете сохранить выходные данные grep в файл и использовать этот файл, если считаете, что не обязательно открывать Vim после:
источник
grep -n
(<filename>:<line>: ...
). Я использую беглый плагин для Git, а затем дело в том:Gstatus
, чтобы перейти к нужному файлу и нажать Enter.grep alias
чтобы всегда использовать цвета, и это, по какой-то причине, нарушило эту-q >()
возможность ...Вы можете сделать это так, если бы не было поддержки grep, как @muru ответил:
git grep
Например, его можно использовать с другой командой .Также вы можете открыть вывод в буфере и использовать «cbuffer» для него.
Об этом см. Раздел « Быстрые исправления » в руководстве.
источник