2

我发现能够在 Vim 中使用宏是多么方便。特别是录音,q但我对如何读取我正在录音的寄存器中存储的内容感到困惑。

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

let @u='^[OHi%^['

^OHCtrl+V Home和+制作^[的地方。现在,当我启动 Vim 时,寄存器的内容应该是,但如果我只是用 录制宏,那么寄存器会读取CtrlV Escu^[OHi%^[q

<80>khi%^[

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

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

4

1 回答 1

1

我不认为宏是这项工作的正确工具,我认为你$ vimtutor现在真的应该遵循:<Home>i%<Esc>不是%在行首插入 a 的正确方法。

nnoremap <leader>% I%<Esc>

似乎是一个更好,更正确的解决方案。

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

于 2012-07-18T20:07:23.063 回答