Es gibt zwei Möglichkeiten, wie dies erreicht werden kann, die reine Vimscript-Methode und die wc
Methode.
Der reine Vim-Weg
Sie können dazu den Befehl suchen und ersetzen verwenden. Zum Beispiel:
:%s/\<\w\{-}\>//gn
Anstatt ein bestimmtes Muster durch etwas zu ersetzen, werden nur die Vorkommen des Musters gezählt. Dies liegt an der n
Flagge. Um die Wörter in einem bestimmten Abschnitt (in diesem Fall in den Zeilen 5 bis 15) zu zählen, können Sie Folgendes tun:
:5,15s/\<\w\{-}\>//gn
Dadurch entfällt die Notwendigkeit, den Inhalt einer Auswahl in ein Register zu ziehen. 5-15
Lesen Sie das Hilfethema für, um weitere Möglichkeiten für das zu sehen, was ersetzt werden kann cmdline-ranges
. Wenn Sie dies häufig tun möchten, ist es wahrscheinlich gut, eine Zuordnung (oder einen Befehl) dafür zu erstellen. Wenn Sie hlsearch
aktiviert haben, möchten Sie möglicherweise :nohlsearch
anschließend ausgeführt werden, um die Hervorhebung zu löschen.
Der wc
Weg
Das gleiche kann mit erreicht werden wc
. Auf die gleiche Weise, wie Sie cmdline-ranges
den Bereich mit dem :s
Befehl auswählen können, können Sie sie mit externen Befehlen verwenden. Zum Beispiel:
:5,15!wc -w
Dies führt die Zeilen 5 bis 15 durch den wc
Befehl. Der Nachteil dabei ist, dass dieser Zeilenbereich durch die Ausgabe des Befehls ersetzt wird. Sie können diese Änderung durch Drücken von rückgängig machen u
. Beachten Sie auch, dass die Vimscript-Lösung möglicherweise nicht mit verschiedenen Sprachen \w
funktioniert , da sie nicht mit den Wortzeichen in anderen Sprachen übereinstimmt. wc
kann es besser machen als \w
. Hier ist auch ein ausgefallener Befehl, um dies zu beschleunigen:
command -range=% -addr=lines WordCount execute '<count>!wc -w' | .y a | undo | echo @a
Beachten Sie, dass dies das a
Register blockiert .
Hinweis
Es scheint, dass dies auch im visuellen Modus mit der g<C-g>
Tastenkombination erreicht werden kann. Eine Erklärung hierzu finden Sie in der Antwort von Carpetsmoker.