2013-04-26 70 views
0

我的问题是当我创建一个vim宏时,我在搜索和替换历史中使用了一些搜索和替换。所以我用箭头键在历史上找到它。但麻烦是宏只记录我的箭头键活动,而不是我找到的命令。因此,当我再次执行宏时,搜索历史记录会发生变化,结果会混乱。有什么办法可以解决这个问题吗?使用搜索历史创建vim宏时遇到的麻烦

+0

你能举一些例子来说明为什么按下上/下是必须的吗? – Kent 2013-04-26 16:48:03

回答

1

是的,你可以通过理解宏记录击键而不是命令的结果来解决这个问题,并相应地采取行动。

例如,当您使用<C-r>///的上次搜索时,不会记录上次搜索寄存器的实际内容。下次你玩这个宏时,最后的搜索模式可能会有所不同,如果你期望的话,你的整个宏将被破坏。如果您希望自己的宏可靠,则必须实际输入搜索模式或将搜索作为录制的一部分。

为了更好地理解录制在Vim中的工作方式,可以粘贴刚刚录制的宏(宏被保存在寄存器中,就像你所抽出的东西一样)并研究它的内容。

QQ (做的东西) q “QP

+0

感谢您的帮助 – 2013-09-22 16:39:28

1

记住这个事实,当你录制宏不使用这样的历史召回的命令。这可能是不是很方便,但你可能会缓冲通过例如参考最后的搜索模式(例如:s//...)或者调用部分命令(例如:w foo<Up>),可以使用宏的这种行为作为特征。 ,可以记录适用于各种情况的宏。

最后,您可以在意识到它已损坏后“抢救”一个宏;因为其内容存储在寄存器中,所以你可以重新编辑,例如通过:

:let @a = <C-r><C-r>=string(@a)<CR>