Начнем с чего-нибудь попроще. В редакторе vi для перемещения первой строки в конец используйте команду ex
m
(move):
:1m$
Аргумент 1
— это исходный диапазон :первой строки. Вы можете использовать диапазон, например 2,15m$
, или сопоставление с образцом /a.*bc/m$
. Место назначения $
обозначает последнюю строку файла. Команда m
помещает перемещенный материал после целевой позиции.
Нет нулевой строки, но цель 0 указывает начало файла. Итак, чтобы вернуть линию туда, где она была:
:$m0
. переместите последнюю строку после фиктивной нулевой строки (, таким образом, перед строкой 1 ).
Итак, как насчет перемещения первой строки, соответствующей шаблону invHn3ion
? Во-первых, мы считаем, что текущая позиция может быть где угодно. Мы хотим начать поиск с первой строки, а не с текущей позиции, поэтому:
:1/invHn3ion/m$
Здесь происходит то, что m
фактически работает с адресным аргументом /invHn3ion/
. 1
— лишний адрес, который оценивается и отбрасывается 1 . Мы могли бы получить тот же эффект с двумя отдельными командами:
:1
:/invHn3ion/m$
Команда m
имеет родственнуюt
(передачу ), которая копирует, а не перемещает.