Desidero cercare una stringa e trovare il numero di occorrenze in un file utilizzando l'editor vi.Ricerca stringa e conteggio nell'editor vi
risposta
:g/xxxx/d
Questo eliminerà tutte le linee con motivo e segnalerà quante cancellazioni. Annulla per riprenderli dopo.
Ovviamente, lui può semplicemente omettere la "d" in modo che non debba per l'operazione – Rook
Nota questo solo ti dice quante linee - non quante occorrenze.Penso che dirk's sia una soluzione migliore –
La mia soluzione qui sotto conta correttamente più occorrenze all'interno una riga e non c'è nulla da annullare –
È necessario il flag n
. Per contare parole Usa:
:%s/\i\+/&/gn
e una particolare parola:
:%s/the/&/gn
Vedi count-items
sezione relativa alla documentazione.
Se è sufficiente digitare:
%s/pattern/pattern/g
poi la riga di stato vi darà il numero di partite in VI pure.
Sembra che questa risposta sia per gli utenti Vim e non per Vi :( – kadeshpa
Hai solo vi sul tuo sistema? Quale versione? – dirkgently
Qualcuno ha taggato il tuo quesiton con vim in esso ... L'ho rimosso – ojblass
IL modo è
:% s/modello // gn
+1 per l digitando e al punto. – Leafy
Questa è la risposta più autentica con nessun trucco over-kill usato. – user1412066
uso
:% s/modello/\ 0/g
quando stringa reticolo è troppo lungo e non ti piace digitare di nuovo tutto
(simile a Gustavo detto, ma in aggiunta:)
Per qualsiasi precedenza di ricerca, si può fare semplicemente:
:%s///gn
Un modello non è necessario, perché è già nella ricerca -register (@/
).
"%" - fare s/
in tutto il file
"g" - ricerca globale (con più colpi in una sola riga)
"n" - impedisce l'eventuale sostituzione del s/
- nulla è cancellato! niente deve essere annullato!
(si veda: :help s_flag
per maggiori informazioni)
(In questo modo, funziona perfettamente con "Ricerca per il testo selezionato visivamente", come descritto nel vim-wikia tip171)
Io suggerisco di fare:
- Effettuare una ricerca con
*
per eseguire una "ricerca limitata" per ciò che si trova sotto il cursore o effettuare una ricerca standard/pattern
. - Utilizzare
:%s///gn
per ottenere il numero di occorrenze.Oppure puoi usare:%s///n
per ottenere il numero di linee con occorrenze.
** ho davvero con ho potuto trovare un plug-in che potrebbero dare la messaggistica di "partita N di N su N linee" con ogni ricerca, ma ahimè.
Nota: Non essere confuso dalla formulazione complessa dell'output. Il comando precedente potrebbe darti qualcosa come 4 matches on 3 lines
dove quest'ultimo potrebbe darti 3 matches on 3 lines
. Mentre tecnicamente accurato, quest'ultimo è fuorviante e dovrebbe dire "3 linee corrispondono". Quindi, come puoi vedere, non c'è mai veramente bisogno di usare la seconda forma (solo "n"). Ottieni le stesse informazioni, più chiaramente e altro usando il modulo 'gn'.
La risposta selezionata (': g/xxxx/d') è terribile, pericolosa e inferiore agli altri in questa pagina. Si prega di deselezionarlo. –
sono d'accordo e ti dice solo 'linee cancellate' non 'occorrenze cancellate' – user1709076