如何保存包含“Escape”键的Vim宏?

时间:2010-05-31 12:38:23

标签: vim macros

我经常使用以下Vim宏(它将当前行放在XML标记内):

I<e>^[A</e>

所以我将它保存到我的.vimrc

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

但它不起作用。
^[部分的意思是“逃避”,但在.vimrc

中并未理解

如何保存此宏或任何包含“Escape”的宏?

7 个答案:

答案 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-notationhere来找到所有键符号的列表。

答案 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>