Если это должно иметь хороший перфект, я предполагаю, что это происходит много. Если так, возьмите свое решение и сделайте это несколько миллионов раз и время это. Я подозреваю то, что Вы имеете, лучше, чем другие решения, потому что Вы не создаете новый собравший "мусор" объект, который должен быть очищен, и Вы не можете сделать копию строки, не выполняя итерации по нему так или иначе.
:help registers
:help quote_alpha
Задайте заглавную букву в качестве имени регистра для добавления к нему, например : yank A
.
: g / ^ match / yank A
Это запускает глобальную команду для восстановления любой строки, которая соответствует ^ match
, и помещения ее в регистр a
. Поскольку a
- это верхний регистр, вместо того, чтобы просто установить регистр на значение, он будет добавлен к нему. Поскольку глобальная команда запускает команду для всех совпадающих строк, в результате вы получите все строки, добавленные друг к другу.
Это означает, что вы, вероятно, захотите сбросить регистр на пустую строку перед запуском: : let @a = ""
.
И, естественно, вы можете использовать то же самое с любым именованным регистром.