Я использую их все время для:
- комментируя блоки кода,
- копирование и перемещение блоков кода,
- восстановление и удаление блоков кода в именованные буферы и
- Редактировать: замена в блоке теста.
Комментарий:
- перейти к первой строке кода, который вы хотите закомментировать,
- отметьте это, например введите
ma
- перейти к концу блока
- введите
:'a,.s/^/#
(или любой другой символ комментария, который вам нужен)
Копирование и перемещение:
- отметить первую строку как выше,
- перейти в конец блока, который вы хотите скопировать / переместить
- введите свой второй маркер, например,
mb
- перейдите туда, куда вы хотите скопировать блок, и введите
:'a,'bco .
или :'a,'bmo .
, чтобы скопировать или переместить соответственно.
Янкирование в указанный буфер:
- отметить первую строку как выше,
- перейти к нижней части блока, который вы хотите восстановить
- enter
:'a,.ya a
скомпонует блок в буфер a или :'a,.ya A
добавит блок к текущему содержимому буфера a
Редактировать: Подставляя в блок текста:
- отметить первую строку как выше,
- перейти в конец блока, который вы хотите заменить в
- введите
:'a,.s/search_string/replace_string/[gc]
, который заменит ваш текстовый блок. Добавление 'g' или 'c' после последней косой черты вызовет обычную глобальность и подтвердит функциональность.
Редактировать: Забыл сказать, помните, что 'a
(апостроф a) относится к строке, содержащей маркер, а `a
(backtick a) относится к символу на отмеченной вами строке.
Итак, `ad`b
(bactic-ad-backtic-b) представляет собой полезный небольшой фрагмент для удаления текста в строке от символа, обозначенного 'a', до символа до символа, отмеченного с б.
Кстати, в Vim ввод :reg
даст вам содержимое всех ваших регистров, в т.ч. ваши удаления регистров.