Как подсчитать количество слов в файле при редактировании файла в vim


21

Я знаю, что могу использовать wcдля подсчета символов, слов и строк файлов в командной строке .

Можно ли как-то подсчитать количество слов в vim ?

Ответы:


22

Вы можете считать слова и строки внутри, viиспользуя viсобственный счетчик:

Нажмите, gа затем CTRL- g. Тогда нижняя строка выглядит, например, так:

Col 1 of 11; Line 1 of 106; Word 1 of 344; Byte 1 of 2644

Или используйте viметод для вызова команд оболочки:

:w !wc -w

:wСначала вызывается команда save ( ), а затем wc -wвыводятся выходные данные. Пример:

:w !wc -w
344

Press ENTER or type command to continue

Нажмите, Enterчтобы вернуться к vi.


Это на самом деле неверное описание :w !<cmd>конструкции. Он записывает текущий буфер в канал, подключенный к команде. Отдельная запись текущего буфера в файл не обещана. Тем не менее, он делает то, что задал вопрос.
mcepl

1

Вы также можете попробовать :!wc %в Vim, хотя он подсчитывает размер файла на диске, а не размер буфера Vim. Это может или не может быть то, что вы хотели.


Он подсчитывает, что находится на диске (если есть), а не что в буфере - поэтому, если вы изменили содержимое буфера с момента последнего сохранения или не сохранили его вообще, вы получите неверный счет (или даже ошибку, если вы создаете файл).
Стивен Китт

Contra Стивен, это является правильным решением «Как я могу подсчитать количество слов в файл при редактировании файла в Vim», в то время как общепринятый ответ строго говоря , не является (хотя это неоднозначное , что означает или имеет ли оно ).
Майкл Гомер

Забавно, что это похоже (за исключением -wфлага, ограничивающего вывод только словами) на ответ на удаление от 2014 года от D_Bye (который, по-видимому, сам удалил его).
Джефф Шаллер

0

Плагины, такие как vim-aviation, могут предоставлять счетчики слов для файла (и выбранных) как часть строки состояния.


Этот ответ не только для ссылок. Я не включил специфику какого-либо конкретного плагина, потому что (как вы говорите) отдельные плагины могут устареть.
Патрик Санан

Я стою исправлено. Однако я бы сказал, что в будущем вы должны попытаться включить соответствующие шаги для реализации предлагаемого вами решения. Спасибо!
Kemotep

0

Для тех, кто хочет посчитать количество слов в данном фрагменте текста (а не в целом файле), используйте \S\+regexp.

  1. Выберите интересующий текст (визуальный режим)
  2. :s/\S\+//gn

Результат. Vim покажет вам что-то вроде этого:10 matches on 1 line

Когда вы нажимаете :в визуальном режиме, vim добавляет команду к'<,'> что означает применение команды к выделенному тексту.

\S\+ захватывает слова, то есть группы символов, разделенные пробелом.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.