使用搜索历史创建vim宏时遇到问题

时间:2013-04-26 16:40:19

标签: vim

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

2 个答案:

答案 0 :(得分:1)

是的,您可以通过了解宏记录击键而不是命令的结果来解决此问题,并采取相应的行动。

例如,当您使用<C-r>///的上一次搜索时,不会记录上一个搜索寄存器的实际内容。下次播放该宏时,最后一个搜索模式可能会有所不同,如果您不希望,您的整个宏将被破坏。如果您希望宏可靠,您必须实际键入搜索模式或在录制过程中执行搜索。

为了更好地掌握录制在Vim中的工作方式,您可以粘贴刚刚录制的宏(宏将保存在寄存器中,就像你抽的东西一样)并研究那里的内容。

QQ    (做东西)    q    “QP

答案 1 :(得分:1)

请记住此事实,并且在录制宏时不要使用此类历史记录撤回命令。它可能不那么方便,但无论如何,你可能会在重复的宏应用程序上分摊工作量。

实际上,精明的从业者可以将这种宏行为用作特征。通过例如引用最后一个搜索模式(例如:s//...)或调用部分命令(例如:w foo<Up>),可以记录适用于各种情况的宏。

最后,你可以在意识到它被破坏之后“挽救”一个宏;因为它的内容存储在一个寄存器中,你可以重新编辑,例如通过:

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