Це можна досягти двома способами, чистим способом і 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 для пояснення цього.