我经常使用下面的 Vim 宏(它将当前行放在 XML 标签内):
I<e>^[A</e>
所以我将其保存到我的.vimrc中
let @e='I<e>^[A</e>'
但是不起作用。
^[
部分的意思是“逃避”,但在.vimrc
中它并不被理解为“逃避”
如何保存此宏或任何包含“Escape”的宏?
尝试在插入模式下使用
<Ctrl-v><Esc>
输入转义符。
请参阅 vim 中的 :help i_CTRL-V
。
对于宏:
:let @e='^[I<e>^[A</e>'
其中
^[
只是通过按 CTRL+VESC(在 Windows 上为 CTRL+QESC)形成的一个字符。请注意宏开头处的转义符。
:help c_CTRL-V
了解更多信息。
对于那些登陆这篇文章寻找如何将 ESC 添加到 mapping 的人,答案是不同的。
按字面意思输入 <ESC>,因此:
:nnoremap <Leader>E I<e><ESC>A</e><ESC>
:help key-notation
了解更多信息。
出于可读性目的,可以使用正确的键符号标签,例如
<Esc>
或 <CR>
而不是 ^[
或 ^M
您需要使用单个
<Esc>
转义标签 \
并使用双引号而不是单引号,这会导致 "\<Esc>"
。
以下示例是等效的
:let @e='^[I<e>^[A</e>'
:let @e="\<Esc><e>\<Esc>A</e>"
可以通过键入
:help key-notation
或此处找到所有关键符号的列表。
如果您使用 vim 的 Windows 行为,其中 Ctrl+V 是粘贴命令,则等效序列是 Ctrl+Q
今天我发现了一个名为 MARVIM 的 vim 插件(http://www.vim.org/scripts/script.php?script_id=2154)。
它能够存储宏并稍后使用快捷方式执行它们。
将宏保存在纯文件中,无需插件。
例如宏 m 。在插入模式下,例如在新行的开头,然后键入 3 个键
ctrl-r ctrl-r m
带有转义符的宏将被放在该行中。 (可根据需要编辑) 在另一行中命名/注释它。 如果您愿意,可以添加其他宏 - 然后将此文件另存为,例如 :w my_vim_macros
当您想重复使用此类保存的宏时: 将光标放在宏字符串的开头,然后按 4keys
“xy$
您的宏(这一行)将被拉出以注册x。
我正在回答我如何在宏中添加Escape。
在 vim 编辑器中使用
:let @a='iabcjj'
这里我将
<ESC>
映射到 jj
by
.vimrc 文件
imap jj <esc>
我不知道为什么,但其他解决方案就是行不通。
所以我定义了一个宏,将哈希值放在一行的第一个字符之前,然后向下移动一行:
let @a = "^i# " . nr2char(27) . "j"
哪里
et @a =
定义宏..^i#
宏的开头(表示:在行中的第一个非空格字符之前放置一个散列). nr2char(27) .
逃脱!j
宏的最后一位(表示:向下移动一行)所以总之(我猜)
nr2char(27)
按下转义键,你只需要将它连接到宏的其他部分,每边各有一个点,并用双引号将其他部分括起来。
尝试添加上面的内容,然后修改它,应该只需要一秒钟就可以理解。