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