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

问题描述 投票:0回答:8

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

I<e>^[A</e>

所以我将其保存到我的.vimrc中

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

但是不起作用。

^[
部分的意思是“逃避”,但在
.vimrc

中它并不被理解为“逃避”

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

vim macros
8个回答
40
投票

尝试在插入模式下使用

<Ctrl-v><Esc>
输入转义符。 请参阅 vim 中的
:help i_CTRL-V


25
投票

对于

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

其中

^[
只是通过按 CTRL+VESC(在 Windows 上为 CTRL+QESC)形成的一个字符。请注意宏开头处的转义符。

请参阅 Vim 中的

:help c_CTRL-V
了解更多信息。


对于那些登陆这篇文章寻找如何将 ESC 添加到 mapping 的人,答案是不同的。

按字面意思输入 <ESC>,因此:

:nnoremap <Leader>E I<e><ESC>A</e><ESC>

请参阅 Vim 中的

:help key-notation
了解更多信息。


7
投票

出于可读性目的,可以使用正确的键符号标签,例如

<Esc>
<CR>
而不是
^[
^M

您需要使用单个

<Esc>
转义标签
\
并使用双引号而不是单引号,这会导致
"\<Esc>"
。 以下示例是等效的

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

可以通过键入

:help key-notation
此处找到所有关键符号的列表。


4
投票

如果您使用 vim 的 Windows 行为,其中 Ctrl+V 是粘贴命令,则等效序列是 Ctrl+Q


1
投票

今天我发现了一个名为 MARVIM 的 vim 插件(http://www.vim.org/scripts/script.php?script_id=2154)。

它能够存储宏并稍后使用快捷方式执行它们。


1
投票

将宏保存在纯文件中,无需插件。

例如宏 m 。在插入模式下,例如在新行的开头,然后键入 3 个键

ctrl-r ctrl-r m

带有转义符的宏将被放在该行中。 (可根据需要编辑) 在另一行中命名/注释它。 如果您愿意,可以添加其他宏 - 然后将此文件另存为,例如 :w my_vim_macros

当您想重复使用此类保存的宏时: 将光标放在宏字符串的开头,然后按 4keys

“xy$

您的宏(这一行)将被拉出以注册x


1
投票

我正在回答我如何在宏中添加Escape

在 vim 编辑器中使用

:let @a='iabcjj'

这里我将

<ESC>
映射到
jj
by

.vimrc 文件

imap jj <esc> 

0
投票

我不知道为什么,但其他解决方案就是行不通。

所以我定义了一个宏,将哈希值放在一行的第一个字符之前,然后向下移动一行:

let @a = "^i# " . nr2char(27) . "j"

哪里

  • et @a = 
    定义宏..
  • ^i# 
    宏的开头(表示:在行中的第一个非空格字符之前放置一个散列)
  • . nr2char(27) .
    逃脱!
  • j
    宏的最后一位(表示:向下移动一行)

所以总之(我

nr2char(27)
按下转义键,你只需要将它连接到宏的其他部分,每边各有一个点,并用双引号将其他部分括起来。

尝试添加上面的内容,然后修改它,应该只需要一秒钟就可以理解。

© www.soinside.com 2019 - 2024. All rights reserved.