Есть два способа, которыми это может быть достигнуто, чистый способ vimscript и wcспособ.
Чистый путь Vim
Вы можете использовать команду поиска и замены, чтобы сделать это. Например:
:%s/\<\w\{-}\>//gn
То, что это делает, вместо того, чтобы заменить данный шаблон чем-то, он просто считает вхождения шаблона. Это из-за nфлага. Чтобы подсчитать слова в определенном разделе (в данном случае строки с 5 по 15), вы можете сделать что-то вроде этого:
:5,15s/\<\w\{-}\>//gn
Это избавляет от необходимости вытягивать содержимое выбора в регистр. Чтобы увидеть больше возможностей для того, что можно поставить на место 5-15, прочитайте раздел справки для cmdline-ranges. Если вы хотите делать это часто, вероятно, лучше создать для него отображение (или команду). Кроме того, если вы hlsearchвключили, вы можете запустить :nohlsearchпозже, чтобы очистить выделение.
wcпуть
То же самое можно сделать с помощью wc. Таким же образом вы можете использовать cmdline-rangesдля выбора области с помощью :sкоманды, вы можете использовать их с внешними командами. Например:
:5,15!wc -w
Это запускает строки с 5 по 15 через wcкоманду. Недостатком этого является то, что он заменяет этот диапазон строк выходными данными команды. Вы можете отменить это изменение, нажав u. Также обратите внимание, что решение vimscript может не работать с разными языками, потому \wчто не соответствует тому, что обычно является символами слова в других языках. wcможет быть лучше, чем \w. Кроме того, вот необычная команда, чтобы сделать это быстрее:
command -range=% -addr=lines WordCount execute '<count>!wc -w' | .y a | undo | echo @a
Обратите внимание, что это забивает aрегистр.
Запись
Похоже, что это также может быть выполнено в визуальном режиме с g<C-g>комбинацией клавиш. См. Ответ Carpetsmoker для объяснения этого.