Quando si utilizza grep da VIM, come saltare ai risultati?


32

Quando utilizzo il plugin grep su VIM, posso cercare nella directory corrente tutte le occorrenze di una stringa all'interno di un set di file, come questo:

:grep Ryan *.txt

Questo produce qualcosa del genere:

file1.txt:3:Ryan was here
file2.txt:10:Ryan likes VIM
file3.txt:5:superuser.com is a fav of Ryan
(1 of 3): Ryan was here
Press ENTER or type command to continue

Se premo invio, mi riporta al mio editor. Quello che voglio davvero fare è essere in grado di aprire uno di quei file e saltare al punto in cui è stata trovata la stringa. C'è un modo per fare questo? La 1 of 3parte mi fa pensare che ci sia un modo per passare in rassegna i risultati, ma non so quali comandi sono disponibili per me. Qualcuno può fare luce su questo?

Risposte:


34

Quando premi INVIO, dovresti guardare la riga 3 di file1.txt. Per passare alla partita successiva, esegui :cn; per saltare alla partita precedente, eseguire :cp. L'esecuzione :copenaprirà una finestra contenente l'elenco delle corrispondenze. Spostare il cursore sulla corrispondenza desiderata e premere INVIO per passare a quella corrispondenza.

Per ulteriori informazioni sull'uso :grep, vedere

:help grep
:help quickfix.txt

Digitare :cne :cpper spostarsi avanti e indietro nell'elenco degli aggiornamenti rapidi può essere scomodo, quindi utilizzo questi mapping:

nmap <silent> <C-N> :cn<CR>zv
nmap <silent> <C-P> :cp<CR>zv

Inoltre, il :grepcomando non è un plugin; fa parte di Vim.


Ottima risposta, grazie! A proposito, puoi fare una ricerca ricorsiva attraverso le cartelle con VIM grep?
Marplesoft,

Finché si esegue su un sistema Unix, è possibile aggiungere qualsiasi argomento a Vim :grepche si aggiungerebbe a un grepcomando eseguito dalla shell. Quindi, potresti fare una ricerca ricorsiva attraverso tutti i file .txt dentro e sotto la directory corrente con :grep -R --include=*.txt Ryan .. Puoi anche eseguire una ricerca ricorsiva usando il :vimgrepcomando di Vim , ma gli argomenti sono diversi e raramente lo uso perché è più lento di :grep.
garyjohn,
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.