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 nbandiera. Per contare le parole usa:
:%s/\i\+/&/gn
e una parola particolare:
:%s/the/&/gn
Vedere la count-itemssezione 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_flagper 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 Commandin Command-linemodalità da a . Ora, qualunque cosa tu scriva dopo :è su CLI (Command Line Interface)%sspecifica 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/ggspecifica tutte le occorrenze nella riga. Con la gbandiera si può sostituire l'intera linea. Se questo gflag 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 Ntasto 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 /patternricerca standard .:%s///gnper ottenere il numero di occorrenze. Oppure puoi usare :%s///nper 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 linesdove 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.