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