Выберите строки и нажмите, :
чтобы войти в командный режим. Vim автоматически заполнит '<,'>
, что ограничивает диапазон выбранными строками. В вашем примере вы можете использовать :s
команду для обмена:
:'<,'>s/\(\w\+\), \(\w\+\)/\2, \1/
Это поменяет местами два слова, разделенных запятой, в каждой строке визуального выделения.
Вы также можете использовать '<
и, '>
как любую другую закладку или позицию строки, например, как часть команды перемещения, поэтому в нормальном режиме d'<
будет удаляться от текущей позиции курсора до начала первой строки в визуальном выборе. Метки остаются в силе, даже если блок больше не выделяется визуально.
Если вы хотите воспроизвести записанный макрос в каждой строке, вам необходимо выполнить макрос с помощью :normal
команды. К сожалению, :normal
команда не работает с рядом строк, но вы можете исправить это с помощью :global
команды. Это запускает :ex
команду в каждой строке, соответствующей регулярному выражению, поэтому вы можете сделать это:
:'<,'>g/^/ norm @a
Пояснение:
:'<,'> for every line in the visual block
g/^/ on every line that matches the regex /^/ - i.e. every line
norm run in normal mode
@a the macro recorded in a