Есть два способа, которыми это может быть достигнуто, чистый способ 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 для объяснения этого.