Vim如何在寄存器中显示宏?

Vim如何在寄存器中显示宏?,vim,macros,keyboard,Vim,Macros,Keyboard,我发现在Vim中使用宏是多么方便。特别是用q录制,但我不知道如何读取我要录制的寄存器中存储的内容 举一个具体的例子,我经常使用Vim来编写LaTeX文档,在这方面,我制作了一个宏,在当前行的开头放置一个%,以便注释掉这段代码。我这样做是通过记录如下。我按了键quHomeI%Escq。现在通过按@u我可以播放那个宏了,因为我经常使用那个宏,所以我决定把它放在我的.vimrc文件中。我查看了主题,发现我必须使用Ctrl+V来抓取我使用的击键,例如escape键。我 let @u='^[OHi%^['

我发现在Vim中使用宏是多么方便。特别是用
q
录制,但我不知道如何读取我要录制的寄存器中存储的内容

举一个具体的例子,我经常使用Vim来编写LaTeX文档,在这方面,我制作了一个宏,在当前行的开头放置一个
%
,以便注释掉这段代码。我这样做是通过记录如下。我按了键
q
u
Home
I
%
Esc
q
。现在通过按
@u
我可以播放那个宏了,因为我经常使用那个宏,所以我决定把它放在我的
.vimrc
文件中。我查看了主题,发现我必须使用Ctrl+V来抓取我使用的击键,例如escape键。我

let @u='^[OHi%^['
我用Ctrl+V Home和Ctrl+V Esc生成了
^OH
,现在当我启动Vim时,寄存器
u
的内容应该是
^[OHi%^[
,但如果我用
q
录制宏,那么寄存器将读取

<80>khi%^[
khi%^[
我试图理解这意味着什么。它做了同样的事情,但如果我在查阅Vim中的一些帮助页面后尝试使用Ctrl+V编写类似的东西(更准确地说是
:help key notation
:help I_Ctrl-V
:help I_Ctrl-V_digit
),但我仍然不理解它


我想理解这一点的动机是,我希望能够阅读我录制的宏的功能。如果我了解寄存器内容是如何生成的,那么我可能能够通过生成类似的结果来理解它。例如,如果我录制的宏遵循与使用Ctrl+V时相同的语法,那么我可以只需检查Ctrl+V加上最有可能的击键所产生的结果,看看哪一个与之匹配。

我认为宏不是适合这项工作的工具,我认为您现在真的应该遵循
$vimtutor
I%
不是在行首插入
%
的正确方法

nnoremap <leader>% I%<Esc>
nnoremap%I%
似乎是一个更好更正确的解决方案


xx
是Vim内部用于表示特殊键的控制字符。有关可能值的列表,请参见
$man termcap

不是您问题的答案,但您应该尝试使用
0
而不是
。这将为您节省一个
ctrl-v
。而您自己尝试它是很荣幸的:I think the Nerd Commenter也支持LaTeX:我作为Vim用户没有那么丰富的经验,所以我不知道宏是否不是最好的方式,但我使用宏的原因是我可以键入
:'
:'我想你是对的。我想我会放弃尝试如何生成这些。我不需要它。如果我想解码macro我记录了我可以参考
$man termcap
。感谢您对
norm
使用的提示。当我意识到这样一件事的时候,就是我意识到我非常喜欢使用Vim的时候。它肯定是由知道文本编辑程序应该如何工作的人制作的。的确,如果您还没有()。