Voglio cercare una stringa e trovare il numero di occorrenze in un file utilizzando l'editor vi.
Voglio cercare una stringa e trovare il numero di occorrenze in un file utilizzando l'editor vi.
Risposte:
:g/xxxx/d
Questo cancellerà tutte le linee con motivo e riporterà quante cancellate. Annulla per riaverli dopo.
Il modo è
:% S / modello // gn
Hai bisogno della n
bandiera. Per contare le parole usa:
:%s/\i\+/&/gn
e una parola particolare:
:%s/the/&/gn
Vedere la count-items
sezione documentazione.
Se digiti semplicemente:
%s/pattern/pattern/g
poi la riga di stato ti darà anche il numero di corrispondenze in vi.
(simile a quanto disse Gustavo, ma in aggiunta:)
Per qualsiasi ricerca precedente , puoi fare semplicemente:
:%s///gn
Un pattern non è necessario, perché è già nel registro di ricerca ( @/
).
"%" - fai s/
in tutto il file
"g" - ricerca globale (con più risultati in una riga)
"n" - impedisce qualsiasi sostituzione di s/
- nulla viene eliminato! niente deve essere annullato!
(vedi: :help s_flag
per maggiori informazioni)
(In questo modo, funziona perfettamente con " Cerca testo selezionato visivamente ", come descritto in vim-wikia tip171 )
uso
:% S / modello / \ 0 / g
quando la stringa del pattern è troppo lunga e non ti piace digitarla di nuovo.
Risposta breve :
:% S / string-to-be-cercato // gn
Per imparare :
Ci sono 3 modalità nell'editor VI come di seguito
:
stai entrando Command
in Command-line
modalità da a . Ora, qualunque cosa tu scriva dopo :
è su CLI (Command Line Interface)%s
specifica tutte le linee. Specificare l'intervallo come %
mezzo per la sostituzione nell'intero file. La sintassi per la sostituzione di tutte le occorrenze è:%s/old-text/new-text/g
g
specifica tutte le occorrenze nella riga. Con la g
bandiera si può sostituire l'intera linea. Se questo g
flag non viene utilizzato, verrà sostituita solo la prima occorrenza nella riga.n
specifica il numero di occorrenze di output //
la doppia barra rappresenta l'omissione di replacement text
. Perché vogliamo solo trovare.Una volta ottenuto il numero di occorrenze, è possibile premere il N
tasto per visualizzare le occorrenze una alla volta.
Per trovare e contare in un particolare intervallo di righe da 1 a 10:
: 1,10s / ciao // gn
%
che l'intero file viene sostituito da ,
numeri di riga separati. Per trovare e sostituire in un particolare intervallo di righe da 1 a 10:
: 1,10s / HELO / ciao / gn
Suggerisco di fare:
*
per fare una "ricerca delimitata" per quello che c'è sotto il cursore, o per fare una /pattern
ricerca standard .:%s///gn
per ottenere il numero di occorrenze. Oppure puoi usare :%s///n
per ottenere il numero di righe con occorrenze.** Ho davvero potuto trovare un plug-in che desse messaggi di "corrispondenza N di N 1 su N 2 linee" con ogni ricerca, ma ahimè.
Nota: non essere confuso dalla formulazione complicata dell'output. Il primo comando potrebbe darti qualcosa di simile a 4 matches on 3 lines
dove potrebbe darti il secondo 3 matches on 3 lines
. Sebbene tecnicamente accurato, quest'ultimo è fuorviante e dovrebbe dire "3 linee corrispondono". Quindi, come puoi vedere, non c'è davvero mai bisogno di usare quest'ultima (solo 'n') forma. Ottieni le stesse informazioni, più chiaramente e di più utilizzando il modulo "gn".
:g/xxxx/d
) è terribile, pericolosa e inferiore alle altre in questa pagina. Si prega di deselezionarlo.