Дублировать каждую строку в VI

У меня есть файл с этими строками:

aa
bb
cc
dd

Я хочу преобразовать это в:

aa
aa
bb
bb
cc
cc
dd
dd

Возможно ли это в VI?

Ответы

Ответ 1

Попробуйте этот простой:

:g/^/norm yyp

Еще один (короче):

:%s/.*/&\r&

Другой:

:%!sed p

Ответ 2

Мне нравится g/^/t.
Команда g (для global) будет искать любые строки, соответствующие шаблону.
Указанный шаблон - ^, который будет соответствовать всем строкам.
t скопирует и вставляет, и, наконец,
dot сообщает ему вставить ниже.

Я выиграю для краткости?

Ответ 3

Используйте глобальную команду g для работы с каждой строкой в ​​файле:

:g/^/norm yyp

Команда g будет работать со всеми строками, соответствующими шаблону. ^ - это шаблон, который будет соответствовать любой строке. norm выполняет команду yyp, которая занимает текущую строку и вставляет ее. :g/^/norm Yp также будет работать.

Подробнее о команде см. :help global, а также посмотрите vim wiki на g.