0

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

4

2 回答 2

1

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

例如,使用<C-r>/或使用上一次搜索时//,不会记录最后一次搜索寄存器的实际内容。下次您播放该宏时,最后一次搜索模式可能会有所不同,并且如果您期望其他情况,您的整个宏将被破坏。如果您希望宏可靠,则必须实际键入搜索模式或执行搜索作为录制的一部分。

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

qq(做事)q“qp

于 2013-04-26T17:05:49.060 回答
1

请记住这一事实,并且在录制宏时不要使用此类历史调用命令。它可能不那么方便,但无论如何,您可能会在重复的宏应用程序上分摊努力。

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

最后,您可以在意识到宏已损坏后“挽救”它;由于其内容存储在寄存器中,您可以重新编辑,例如通过:

:let @a = <C-r><C-r>=string(@a)<CR>
于 2013-04-26T18:57:52.167 回答