Я хочу найти строку и найти количество вхождений в файле с помощью редактора 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".