Ответ 1
Попробуйте этот простой:
:g/^/norm yyp
Еще один (короче):
:%s/.*/&\r&
Другой:
:%!sed p
У меня есть файл с этими строками:
aa
bb
cc
dd
Я хочу преобразовать это в:
aa
aa
bb
bb
cc
cc
dd
dd
Возможно ли это в VI?
Попробуйте этот простой:
:g/^/norm yyp
Еще один (короче):
:%s/.*/&\r&
Другой:
:%!sed p
Мне нравится g/^/t.
Команда g
(для global
) будет искать любые строки, соответствующие шаблону.
Указанный шаблон - ^
, который будет соответствовать всем строкам.
t
скопирует и вставляет, и, наконец, dot
сообщает ему вставить ниже.
Я выиграю для краткости?
Используйте глобальную команду g
для работы с каждой строкой в файле:
:g/^/norm yyp
Команда g
будет работать со всеми строками, соответствующими шаблону. ^
- это шаблон, который будет соответствовать любой строке. norm
выполняет команду yyp
, которая занимает текущую строку и вставляет ее. :g/^/norm Yp
также будет работать.
Подробнее о команде см. :help global
, а также посмотрите vim wiki на g
.