Поиск строки и подсчет в редакторе vi

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

Ответ 1

:g/xxxx/d

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

Ответ 2

Способ

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

Ответ 3

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

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

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

:%s/the/&/gn        

Смотрите раздел count-items.

Если вы просто введите:

%s/pattern/pattern/g

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

Ответ 4

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

Ответ 5

(аналогично Густаво, но дополнительно:)

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

:%s///gn

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

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

(Таким образом, он отлично работает с "Искать визуально выбранный текст", как описано в vim-wikia tip171)

Ответ 6

использовать

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

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

Ответ 7

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

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

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

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