Dato il risultato di grep -n, come posso aprire vim in quella riga specifica? (usando solo la tastiera)


9

Quando corro grep "keyword" -ne ottengo il seguente elenco di risultati:

a/b/c:10:    keyword
a/b/c:70:    keyword
a/b/d:50:    keyword

Come posso aprire uno dei file (ad esempio il 2 ° in elenco) nella riga trovata?

Ora copio solo l'output con il mouse, lo copio dopo vime poi aggiungo +con il numero di riga che copio. (nel senso che scrivo vim a/b/c +70usando la copia del mouse per ottenere il nome del file e un'altra copia del mouse per ottenere il numero di riga [o lo copio solo a mano, quando è abbastanza corto])

C'è un modo per farlo con una scorciatoia da tastiera?


Si può provare una cosa del genere: echo a/b/c:70: keyword | awk '{print $1}' | sed 's,:$,,' | sed 's,:, +,' | xargs vim && reset.
Arkadiusz Drabczyk,

2
Inoltre, se sei interessato a utilizzare Vim in modo più efficiente, dai un'occhiata al sito dedicato Vi e Vim Stack Exchange.
Muru,

Risposte:


14

Due cose:

  1. Vim ha del supporto per grep.

    Se apri Vim e lo fai :grep keyword ..., Vim popola la lista degli aggiornamenti rapidi con i risultati e passa al primo file. È quindi possibile passare alla n ° ingresso quickfix con :cc n(e altri comandi).

  2. Puoi popolare la suddetta lista di soluzioni rapide usando l'output di grep:

    vim -q <(grep -n keyword ...)
    

    E quindi usa i comandi di navigazione quickfix menzionati sopra.

O è più semplice che giocare manualmente con l'output di grep.

In alternativa a (2), puoi salvare l'output di grep in un file e utilizzare invece quel file, se pensi di non aprire necessariamente Vim dopo:

grep ... | tee log
vim -q log

Tentativo di utilizzare lo stesso metodo sullo stato git, inutilmente :( - vim -q <(stato git | grep modificato)
CIsForCookies

3
@CIsForCookies Che non sarà nello stesso formato di grep -n( <filename>:<line>: ...). Uso il plug-in fuggitivo per Git, quindi è una questione di :Gstatus, passare al file desiderato e premere Invio.
muru,

A proposito, ho modificato il mio ~ / .bashrc grep alias per usare sempre i colori e che, per qualche ragione, ha rotto l' -q >()opzione ...
CIsForCookies il

2

Si potrebbe fare è così se non ci fosse già supporto per grep come ha risposto @muru:

:cexpr system("grep -n keyword")

Può essere utilizzato con un altro comando, git grepad esempio.

Inoltre, è possibile aprire l'output in un buffer e utilizzare "cbuffer" su di esso.

Vedere la sezione di correzione rapida dal manuale al riguardo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.