Выберите строки, затем нажмите :
, чтобы войти в командный режим. 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