Vim: Подсчёт вхождений
Одной из наиболее часто используемых команд в Vim является команда замены :s
. Часто применяется ко всему файлу в виде :%s/совпадение/замена/g
. После завершающего слэша вы можете применять флаги изменяющие поведение совпадения. В этом случае завершающий флаг g
указывает, что весь диапазон адресов %
(что означает все строки) должен быть включён в замену (глобально
). Вы также можете в Визуальном режиме выбрать диапазон строк и заменить их в этом выделении.
Но что, если вы на самом деле не хотите производить замену, а просто подсчитать количество совпадений с заданным образцом? В Vim есть удобны флаг шаблона замены n
, который может выполнять поиск, но игнорировать замену. Флаг используется следующим образом:
:%s/some_pattern//n
… вернёт количество совпадений и количество строк, на которых эти совпадения встречаются, без какой-либо замены:
12 occurrences on 9 lines
или
12 совпадений на 9 строках
Для этого есть множество применений. Возможно, вы пишете прозу в Vim и хотите убедиться, что не повторяете одно и то же слово слишком много раз.
Один из моих недавних случаев использования связан с попыткой решить, какой стиль именования столбца базы данных использовать. Я просто проверил файл схемы базы данных на наличие нескольких шаблонов соглашений об именах. Одно встретилось 60 раз, а другое — 3 раза, естественно, я назвал столбец с наиболее часто используемым соглашением.