Ищите строку и считайте в редакторе vi - PullRequest
98 голосов
/ 04 апреля 2009

Я хочу найти строку и найти количество вхождений в файле с помощью редактора vi.

Ответы [ 7 ]

171 голосов
/ 13 октября 2010

Путь

:% S / шаблон // дп

121 голосов
/ 04 апреля 2009

Вам нужен флаг n. Для подсчета слов используйте:

:%s/\i\+/&/gn   

и конкретное слово:

:%s/the/&/gn        

См. count-items раздел документации.

Если вы просто наберете:

%s/pattern/pattern/g

тогда в строке состояния также будет указано количество совпадений в vi.

38 голосов
/ 04 апреля 2009

:% s / строка / строка / г даст ответ.

21 голосов
/ 28 августа 2013

(похоже, как сказал Густаво, но дополнительно:)

Для любого ранее поиска вы можете сделать просто:

:%s///gn

Шаблон не нужен, потому что он уже находится в регистре поиска (@/).

"%" - сделать s/ во всем файле
"g" - глобальный поиск (с несколькими попаданиями в одной строке)
«n» - предотвращает любую замену s/ - ничего не удалено! ничто не должно быть отменено!
(см .: :help s_flag для получения дополнительной информации)

(Таким образом, он отлично работает с « Поиск визуально выделенного текста », как описано в vim-wikia tip171 )

7 голосов
/ 04 апреля 2009
:g/xxxx/d

Это удалит все строки с рисунком и сообщит, сколько удалено. Отменить, чтобы вернуть их после.

3 голосов
/ 18 февраля 2011

использование

:% S / шаблон / \ 0 / г

когда строка шаблона слишком длинная и вам не нравится вводить ее снова.

0 голосов
/ 11 января 2017

Я предлагаю сделать:

  1. Выполните поиск с помощью *, чтобы выполнить "ограниченный поиск" того, что находится под курсором, или выполните стандартный поиск /pattern.
  2. Используйте :%s///gn, чтобы получить количество вхождений. Или вы можете использовать :%s///n, чтобы получить количество строк с вхождениями.

** Я действительно мог бы найти плагин, который бы давал сообщение "соответствие N из N 1 на N 2 строк" с каждый поиск, но увы.

Примечание: Не смущайтесь хитрой формулировкой вывода. Первая команда может дать вам что-то вроде 4 matches on 3 lines, где последняя может дать вам 3 matches on 3 lines. В то время как технически точен, последний вводит в заблуждение и должен сказать «3 строки соответствуют». Итак, как вы можете видеть, на самом деле никогда не нужно использовать последнюю (только 'n') форму. Вы получаете ту же информацию, более ясно и больше, используя форму «gn».

...