我经常使用以下Vim宏(它将当前行放在XML标记内):
I<e>^[A</e>
所以我将它保存到我的.vimrc
中let @e='I<e>^[A</e>'
但它不起作用。
^[
部分的意思是“逃避”,但在.vimrc
如何保存此宏或任何包含“Escape”的宏?
答案 0 :(得分:35)
尝试在插入模式下使用<Ctrl-v><Esc>
输入转义。
请参阅vim中的:help i_CTRL-V
。
答案 1 :(得分:18)
<ESC>
是你的朋友。字面上输入&lt; E S C &gt; ,因此:
let @e=I<e><ESC>A</e>
有关详细信息,请参阅Vim中的:help key-notation
。
<强>更新强>:
啊...... <ESC>
适用于键映射(例如:map <Leader>e <ESC>I<e><ESC>A</e>
[已测试]),但不适用于宏,这些宏按字面扩展。我刚试过并测试了这个:
:let @e='^[I<e>^[A</e>'
其中^[
只是通过点击 CTRL + V ESC 形成的一个字符。请注意宏开头处的转义。
答案 2 :(得分:4)
如果您对vim使用Windows行为,其中 Ctrl + V 是粘贴命令,则等效序列为 Ctrl + Q
答案 3 :(得分:1)
今天我发现了一个名为MARVIM(http://www.vim.org/scripts/script.php?script_id=2154)的vim插件。
它能够存储宏并在以后使用快捷方式执行它们。
答案 4 :(得分:1)
出于可读性目的,可以使用诸如<Esc>
或<CR>
之类的适当键标记标签代替^[
或^M
您需要使用单引号<Esc>
对标签\
进行转义,并使用双引号代替单引号,否则将导致"\<Esc>"
。
以下示例是等效的
:let @e='^[I<e>^[A</e>'
:let @e="\<Esc><e>\<Esc>A</e>"
可以通过键入:help key-notation
或here来找到所有键符号的列表。
答案 5 :(得分:0)
在没有插件的情况下将宏保存在普通文件中。
例如宏 m 。在插入模式中,例如在新行的开头,然后键入3个键
ctrl-r ctrl-r m
带有转义的宏将放在该行中。 (根据需要可编辑) 在另一个行名称/评论它。 如果您愿意,可以添加其他宏 - 然后将此文件保存为例如 :w my_vim_macros
如果要重用此类已保存的宏,请执行以下操作: 将光标放在宏字符串的开头,然后是4keys
<强>“XY $ 强>
并且你的宏(这一行)将被强行注册 x 。
答案 6 :(得分:0)
我正在回答要在宏中添加转义的操作。
在vim编辑器中使用
:let @a='iabcjj'
在这里,我将<ESC>
映射到jj
,
.vimrc文件
imap jj <esc>