Dies wird von der Vim-FAQ beantwortet. "Wie zähle ich, wie oft ein bestimmtes Wort in einem Puffer vorkommt?"
Wie kann ich das Ergebnis eines Regex-Befehls im Vim-Normalmodus erfassen?
Ich möchte herausfinden, wie oft 'x' in meiner Datei vorhanden ist. Ich übermittle %s/x//gn
und erhalte die richtige Antwort.
Wie kann ich die resultierende Zählung mithilfe von Vimscript in der Befehlszeile in einer Variablen erfassen?
Die folgende Lösung wurde durch eine Antwort unten angedeutet:
:let cnt=0 :g/x/let cnt=cnt+1 :echo cnt
Jedoch cnt
wird die Gesamtzahl der Zeilen im Puffer zu speichern, die eine haben x
, nicht, wie viele x
s es in der gesamten Datei ist.
Die ursprüngliche Frage bleibt also bestehen.
3 Antworten auf die Frage
Sie können es versuchen
:let cnt=0 :g/^.*may/let cnt=cnt+1 :echo cnt
Sie werden dann sehen, wie viele Zeilen mindestens einmal das Wort "may" enthalten. Der folgende Text wird also als 1 gezählt:
Your mileage may vary. You may have already won.
Einfach.
Folgendes tut den Trick:
:echo eval(join(map(range(1, line('$')), 'len(substitute(getline(v:val),"[^x]","","g"))')," + "))
Dies ersetzt alle Nichtzeichen x
durch nichts, zählt die Anzahl der verbleibenden Zeichen (sollte x
s sein) und addiert dieses Ergebnis für jede Zeile in der Datei.
Ich hatte die Idee für diese Technik mit der map
Funktion von Dennis Williamson, in einem anderen Beitrag über Vim-Scripting.
Verwandte Probleme
-
3
Wie kann ich eine Verzeichnisstruktur "invertieren"?
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
7
Starten Sie den Synergy-Client beim Booten in Mac OS X
-
13
Welche Vim-Funktionen verwenden Sie?
-
4
Wie synchronisieren Sie GreaseMonkey-Skripts zwischen Computern?
-
8
Mit einem Tastendruck die mit "Leertaste" markierte "Registerkarte" in Vim löschen
-
14
Regex-Tool für Linux
-
1
Kann ich ein Skript schreiben, das Benutzer automatisch wechselt?
-
6
Guter PowerShell-Leitfaden, der durch fortgeschrittene Verwendung Einstieg leistet
-
1
Sie können nicht verstehen, warum ASCII- und HEX-Erkennungen in der Statuszeile von Vim benötigt wer...