Quando executo grep "keyword" -n
e obtenho a seguinte lista de resultados:
a/b/c:10: keyword
a/b/c:70: keyword
a/b/d:50: keyword
Como posso abrir um dos arquivos (digamos o 2º da lista) na linha encontrada?
Agora, apenas copio a saída usando o mouse, copio depois vim
e depois adiciono +
o número da linha que copio. (ou seja, eu escrevo vim a/b/c +70
usando a cópia do mouse para obter o nome do arquivo e outra cópia do mouse para obter o número da linha [ou apenas copio à mão, quando for suficientemente curto])
Existe uma maneira de fazer isso com um atalho de teclado?
command-line
vim
grep
CIsForCookies
fonte
fonte
echo a/b/c:70: keyword | awk '{print $1}' | sed 's,:$,,' | sed 's,:, +,' | xargs vim && reset
.Respostas:
Duas coisas:
O Vim tem algum suporte para
grep
.Se você abrir o Vim, e o fizer
:grep keyword ...
, o Vim preencherá a lista de correções rápidas com os resultados e passará para o primeiro arquivo. Você pode então ir para o n º quickfix entrada com:cc n
(e outros comandos).Você pode preencher a lista de correções rápidas mencionada usando a saída do grep:
E, em seguida, use os comandos de navegação do quickfix mencionados acima.
Ou é mais simples do que brincar com a saída do grep manualmente.
Como alternativa a (2), você pode salvar a saída do grep em um arquivo e usá-lo, se achar que não abrirá o Vim depois:
fonte
grep -n
(<filename>:<line>: ...
). Eu uso o plugin fugitivo para o Git e, em seguida, é uma questão de:Gstatus
mudar para o arquivo desejado e pressionar Enter.grep alias
para usar cores sempre, e que, por alguma razão, quebrou a-q >()
opção ...Você poderia fazer isso se não houvesse suporte para grep já que o @muru respondeu:
Pode ser usado com outro comando,
git grep
por exemplo.Além disso, você pode abrir a saída em um buffer e usar "cbuffer" nele.
Consulte a seção quickfix do manual sobre isso.
fonte