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

时间:2012-07-18 16:39:05

标签: vim macros keyboard

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

举一个具体的例子,我在编写LaTeX文档时使用了很多Vim,在那个连接中,我创建了一个宏,它将%放在当前行的开头,以便对此代码进行注释出。我这样做的记录如下。我按下了按键q u 主页 i % Esc q。现在按@u我可以播放该宏,因为我经常使用那个宏,所以我决定把它放在我的.vimrc文件中。我查看了主题并发现我必须使用 Ctrl + V 来获取我使用的击键,例如转义键。我

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

我用 Ctrl + V Home ^OH Ctrl ^[ kbd> + V Esc 。现在,当我启动Vim时,寄存器u的内容应该是^[OHi%^[,但如果我只是用q录制宏,那么寄存器将会读取

<80>khi%^[

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

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

1 个答案:

答案 0 :(得分:1)

我认为宏不是正确的工具,我认为你现在应该立即关注$ vimtutor<Home>i%<Esc>不是插入%的正确方法在行的开头。

nnoremap <leader>% I%<Esc>

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

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