I use the following Vim macro a lot (it puts the current line inside XML tags):
I<e>^[A</e>
So I saved it into my .vimrc
let @e='I<e>^[A</e>'
But it does not work.
The^[
part means "Escape" but it is not understood as such in .vimrc
How can I save this macro, or 开发者_StackOverflow社区any macro that contains "Escape" ?
Try entering the escape with <Ctrl-v><Esc>
in insert mode.
See :help i_CTRL-V
in vim.
For a macro:
:let @e='^[I<e>^[A</e>'
Where ^[
is just one char formed by hitting CTRL+VESC (CTRL+QESC on Windows). Note the escape right at the beginning of the macro.
See :help c_CTRL-V
in Vim for more information.
For those who've landed on this post looking for how to add ESC to a mapping, the answer is different.
Literally type <ESC>, thus:
:nnoremap <Leader>E I<e><ESC>A</e><ESC>
See :help key-notation
in Vim for more info.
For readability purpose, it's possible to use the proper key-notation tags such as <Esc>
or <CR>
instead of ^[
or ^M
You would need to escape the tag <Esc>
with a single \
and use double quotes instead of single quotes which would result in "\<Esc>"
.
The following examples are equivalent
:let @e='^[I<e>^[A</e>'
:let @e="\<Esc><e>\<Esc>A</e>"
A list of all key notations can be found by typing :help key-notation
or here.
If you're using Windows behavior for vim where Ctrl+V is the Paste command, the equivalent sequence is Ctrl+Q
Today I discovered a vim plug-in called MARVIM (http://www.vim.org/scripts/script.php?script_id=2154).
It is capable of storing macros and executing them later using shortcuts.
Saving macros in plain file without plugins.
Having for example macro m . In insert mode, at e.g beginning of new line, then type 3 keys
ctrl-r ctrl-r m
the macro with escapes will be put in that line. (editable as needed) In another line name/comment it. Add other macros if you wish - then save this file as e.g. :w my_vim_macros
When you want to reuse such saved macro(s): place cursor on the beginning of macro string, then 4keys
"xy$
and your macro (this line) will be yanked to register x.
I'm answering what I do to add Escape in macro.
Using in vim editor
:let @a='iabcjj'
here I map <ESC>
to jj
by
.vimrc file
imap jj <esc>
精彩评论