我发现能够在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 加上最有可能产生的击键,看看哪一个匹配。
答案 0 :(得分:1)
我认为宏不是正确的工具,我认为你现在应该立即关注$ vimtutor
:<Home>i%<Esc>
不是插入%
的正确方法在行的开头。
nnoremap <leader>% I%<Esc>
似乎是一个更好,更正确的解决方案。
<80>xx
是Vim内部用来表示特殊键的控制字符。有关可能值的列表,请参阅$ man termcap
。