Как сохранить макрос Vim, содержащий нажатия клавиш "Escape"?

Я часто использую следующий макрос Vim (он помещает текущую строку в теги XML):

I<e>^[A</e>

Поэтому я сохранил его в свой.vimrc

let @e='I<e>^[A</e>'

Но это не работает.
^[ часть означает "побег", но она не понимается как таковая в .vimrc

Как я могу сохранить этот макрос или любой макрос, который содержит "Escape"?

6 ответов

Решение

Попробуйте войти в побег с <Ctrl-v><Esc> в режиме вставки. Увидеть :help i_CTRL-V в действ.

<ESC> твой друг здесь Буквально введите <ESC>, таким образом:

let @e=I<e><ESC>A</e>

Увидеть :help key-notation в Vim для получения дополнительной информации.

Обновление:

Ах... <ESC> работает в сопоставлениях клавиш (таких как :map <Leader>e <ESC>I<e><ESC>A</e> [проверено]), но не в макросах, которые расширяются буквально. Я только что попробовал и проверил это:

:let @e='^[I<e>^[A</e>'

куда ^[ это только один символ, образованный нажатием CTRL+VESC. Обратите внимание на побег прямо в начале макроса.

Для удобства чтения можно использовать правильные теги с ключевыми обозначениями, такие как <Esc> или <CR> вместо того ^[ или ^M

Вам нужно будет избежать тега <Esc> с одним \ и используйте двойные кавычки вместо одинарных, что приведет к "\<Esc>". Следующие ниже примеры эквивалентны

:let @e='^[I<e>^[A</e>'
:let @e="\<Esc><e>\<Esc>A</e>"

Список всех ключевых обозначений можно найти, набрав :help key-notationили здесь.

Если вы используете поведение Windows для vim, где Ctrl+V - команда Вставить, эквивалентная последовательность - Ctrl+Q

Сохранение макросов в виде простого файла без плагинов.

Имея, например, макрос м. В режиме вставки, например, в начале новой строки, введите 3 клавиши

ctrl-r ctrl-r m

макрос с escape-символами будет помещен в эту строку. (редактируется по мере необходимости) В другой строке название / комментарий. Если хотите, добавьте другие макросы, а затем сохраните этот файл, например:w my_vim_macros

Если вы хотите повторно использовать такой сохраненный макрос (ы): поместите курсор в начало строки макроса, затем нажмите 4 клавиши

"ху $

и ваш макрос (эта строка) будет восстановлен для регистрации x.

Сегодня я обнаружил подключаемый модуль vim под названием MARVIM ( http://www.vim.org/scripts/script.php?script_id=2154).

Он способен хранить макросы и выполнять их позже с помощью ярлыков.

Я отвечаю, что я делаю, чтобы добавить Escape в макрос.

Использование в редакторе vim

:let @a='iabcjj'

здесь я карта <ESC> в jj от

VIMRC файл

imap jj <esc> 
Другие вопросы по тегам