Можно выполнить следующую процедуру.
Очистить регистр (например, "a
).
qaq
или
:let @a = ''
Выполнить команду 1
:g/\d\+/norm!//e^Mv??^M"Ay
Если необходимо добавить символ новой строки после каждого из
совпадения, вместо этого выполните эту команду: 2
:g/\d\+/norm!//e^Ma^M^[??^Mv$"Ayu
Введите ^M
как Ctrl + V , затем Введите (или
Ctrl + M ), введите ^[
as
Ctrl + V затем Esc (или
* * 1 042 Ctrl + [* * 1045). Чтобы не перепечатывать шаблон
которые только что были использованы в поиске, можно нажать
Ctrl + R , / для автоматической вставки
последний шаблон поиска.
Также можно записать команду для выполнения в согласованных строках (часть
следующий norm!
) в качестве макроса. Это позволяет увидеть действия
сразу на пробной линии и убедиться, что они правильные. Затем,
макрос можно применить, используя :global
:
:g/\d\+/norm!@z
1 На верхнем уровне команда представляет собой :global
, выполняющую Ex
команда norm!//e^Mv??^M"Ay
на каждой из строк, которые соответствуют шаблону
\d\+
. Команда Ex начинается с команды norm!
для выполнения Normal
Команды режима //e^Mv??^M"Ay
. Это три команды, разделенные
символ возврата каретки ^M
. Первый, //e
, ищет поиск
шаблон (который установлен на шаблон, используемый в глобальной команде) и положить
курсор на последний символ совпадения (из-за флага e
, см. :help
search-offset
). Затем команда v
запускает визуальный режим. Выглядит команда ??
для последнего шаблона поиска в обратном направлении (и поместите курсор на первый
символ совпадения), таким образом выбирая текст, который соответствует последнему поиску
шаблон. Последняя команда "Ay
возвращает выбранный текст, добавляя его к
a
зарегистрироваться.
2 Вторая глобальная команда напоминает первую в общих чертах.
На каждой совпавшей строке он перемещает курсор к последнему символу совпадения
и вставляет символ новой строки после этого символа. Затем он помещает курсор в начало
соответствия и выбирает (в визуальном режиме) все до конца строки
(включая только что вставленный перевод строки). Наконец, команда добавляет выбранный
текст в регистр и отменяет вставку новой строки.
3 Всегда можно увидеть действия, записанные в конкретном макросе
проверяет содержимое соответствующего регистра, используя :di z
или "zp
,
например.