Ich möchte nach einer Zeichenfolge suchen und die Anzahl der Vorkommen in einer Datei mit dem vi-Editor ermitteln.
:g/xxxx/d
Dadurch werden alle Zeilen mit Muster gelöscht und gemeldet, wie viele gelöscht wurden. Machen Sie rückgängig, um sie nachher zurückzuholen.
DER Weg ist
:% s/pattern // gn
Sie benötigen das Flag n
. Wörter zählen:
:%s/\i\+/&/gn
und ein bestimmtes Wort:
:%s/the/&/gn
Siehe count-items
Dokumentation.
Wenn Sie einfach Folgendes eingeben:
%s/pattern/pattern/g
dann gibt die Statuszeile auch die Anzahl der Übereinstimmungen in vi an.
:% s/string/string/g gibt die Antwort.
(ähnlich wie Gustavo sagte, aber zusätzlich:)
Für jede zuvor Suche können Sie einfach Folgendes tun:
:%s///gn
Ein Muster ist nicht erforderlich, da es bereits im Suchregister (@/
) enthalten ist.
"%" - do s/
in der gesamten Datei
"g" - global suchen (mit mehreren Treffern in einer Zeile)
"n" - verhindert das Ersetzen von s/
- nichts wird gelöscht! nichts muss rückgängig gemacht werden!
(siehe: :help s_flag
für weitere Informationen)
(So funktioniert es perfekt mit "Suche nach visuell ausgewähltem Text", wie in vim-wikia tip171 beschrieben
benutzen
:% s/Muster/\ 0/g
wenn die Musterzeichenfolge zu lang ist und Sie nicht alles neu eingeben möchten.
Ich schlage vor zu tun:
*
nach einer "beschränkten Suche" nach dem, was sich unter dem Cursor befindet, oder führen Sie eine Standard-/pattern
-Suche durch.:%s///gn
, um die Anzahl der Vorkommen abzurufen. Oder Sie können :%s///n
verwenden, um die Anzahl der Zeilen mit Vorkommen zu ermitteln.** Ich könnte wirklich ein Plug-In finden, das "N" von N ausrichten würde1 auf N2 Zeilen "bei jeder Suche, aber leider.
Hinweis: Lassen Sie sich nicht durch den kniffligen Wortlaut der Ausgabe verwechseln. Der erste Befehl könnte Ihnen etwas wie 4 matches on 3 lines
geben, wo der letztere Ihnen 3 matches on 3 lines
geben könnte. Während {technisch genau ist, ist letzteres irreführend und sollte '3 Zeilen übereinstimmen' sagen. Wie Sie sehen können, ist es also nie nötig, die letztere (nur 'n') Form zu verwenden. Sie erhalten die gleichen Informationen, klarer und mehr, wenn Sie das Formular 'gn' verwenden.