Изменен подсчет вхождений в Vim без пометки - PullRequest
109 голосов
/ 16 сентября 2008

Чтобы узнать, сколько раз шаблон существует в текущем буфере, я делаю:

:%s/pattern-here/pattern-here/g

Это дает количество вхождений паттерна, но очевидно громоздко и также имеет побочный эффект установки статуса «изменен».

Есть ли более элегантный способ считать?

Ответы [ 6 ]

164 голосов
/ 16 сентября 2008

Чтобы избежать подстановки, оставьте второй шаблон пустым и добавьте флаг «n»:

:%s/pattern-here//gn

Это описывается как официальный совет .

8 голосов
/ 01 февраля 2013
:help count-items

В VIM 6.3 вот как вы это делаете.

:set report=0
:%s/your_word/&/g    # returns the count without substitution

В VIM 7.2 вот как вы это сделаете:

:%s/your_word/&/gn   # returns the count, n flag avoids substitution
5 голосов
/ 16 сентября 2008
:!cat %| grep -c "pattern"

Это не совсем команда vim, но она даст вам то, что вам нужно от vim.
Вы можете сопоставить его с командой, если вам нужно использовать его часто.

2 голосов
/ 23 июля 2009

vimscript IndexedSearch улучшает команды поиска Vim для отображения "При совпадении #N из M совпадений".

1 голос
/ 17 сентября 2015

Наведите курсор на слово, которое вы хотите посчитать, и выполните следующее.

:%s/<c-r><c-w>//gn

См. :h c_ctrl-r_ctrl-w

0 голосов
/ 10 ноября 2011

vimgrep ваш друг здесь:

vimgrep pattern %

Показывает:

(1 of 37)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...