1

Я хотел бы создать макрос, чтобы, если я выберу фрагмент текста (с помощью клавиатуры или мыши) и вызвал этот макрос, он добавил [b] и [/b] вокруг текста (например). Я знаком с записью макросов с использованием q и запуском их с @ , но я не мог понять, как связать макрос с текущим визуальным выделением.

2 ответа2

4

Макросы ничем не отличаются от того, что вы вводите для достижения своей цели. При работе с визуальным выделением вы обычно используете движения, такие как `< `> чтобы перейти в начало и конец выделения и вставить теги с i и a ; gv позволяет вам повторно выбрать предыдущий выбор.

Для вашего конкретного примера, возможно, стоит заглянуть в surround.vim - Плагин удаления / изменения / добавления скобок / цитат / XML-тегов ; может быть, он уже делает то, что вы хотите.

1

Другим вариантом является плагин Ultisnips . У него есть специальный механизм "визуального заполнителя".

Фрагменты могут содержать специальный заполнитель с именем $ {VISUAL}. Переменная $ {VISUAL} раскрывается текстом, выбранным непосредственно перед развертыванием фрагмента.

Таким образом, вы можете определить фрагмент, который окружает визуальный выбор, с помощью определенного тега:

snippet b "surrond with [b] tag"
[b]${1:${VISUAL}}[/b]
endsnippet

или вы можете сделать общий фрагмент, который окружает визуальный выбор любым тегом:

snippet tag "surround with a tag"
[${1}]${2:${VISUAL}}[/$1]
endsnippet

или вы можете сходить с ума и использовать возможности Python-интерполяции, чтобы выполнить любую предварительную обработку, которую вы хотите, с визуально выбранным текстом внутри фрагмента.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .