Сила g
:
:g/\vdefn.*\n\s*\zs"([^"]|\n)*"/normal gngq
Часть между /
s довольно понятна, так как это регулярное выражение из вашего исходного вопроса.
normal gngq
в конце это несколько интересно. gn
выберет следующее совпадение регулярного выражения и gq
, конечно, отформатирует этот выбор (как вы упомянули в своем вопросе).
:g
это действительно отличная часть. Это, на мой взгляд, одна из самых полезных функций Vim. Команда g
ex принимает регулярное выражение и команду Ex и выполняет команду в каждой строке, с которой совпадает регулярное выражение. Если вы еще не узнали об этом :g
, я настоятельно рекомендую это сделать, поскольку это значительно повысит вашу производительность. Несколько ресурсов являются собственностью Vim :help :g
или Power of g на вики Vim.
gn
Деталь выбора из строки , в которойV
инициируется к следующему (не тот , на той же линии) вхождение шаблона. Документация Vim гласит, что если активен визуальный режим, выбор расширяется от текущей строки до следующего шаблона. Это вызывает нежелательное поведение.