Es gibt zwei Möglichkeiten, wie dies erreicht werden kann, die reine Vimscript-Methode und die wcMethode.
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 nFlagge. 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-15Lesen 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 hlsearchaktiviert haben, möchten Sie möglicherweise :nohlsearchanschließend ausgeführt werden, um die Hervorhebung zu löschen.
Der wcWeg
Das gleiche kann mit erreicht werden wc. Auf die gleiche Weise, wie Sie cmdline-rangesden Bereich mit dem :sBefehl 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 wcBefehl. 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 \wfunktioniert , da sie nicht mit den Wortzeichen in anderen Sprachen übereinstimmt. wckann 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 aRegister 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.