使用搜索历史记录创建vim宏时出现问题

使用搜索历史记录创建vim宏时出现问题,vim,Vim,我的问题是,当我创建vim宏时,我在搜索和替换历史记录中使用了一些搜索和替换。所以我用箭头键在历史中找到它。但问题是宏只记录我的箭头键活动,而不是我找到的命令。因此,当我再次执行宏时,搜索历史会发生变化,结果也会混乱。有什么办法可以解决这个问题吗?是的,您可以通过理解宏记录击键,而不是命令的结果,并据此采取行动来解决这个问题 例如,当您将上一次搜索与/或/一起使用时,不会记录上一次搜索寄存器的实际内容。下次播放该宏时,最后的搜索模式可能会有所不同,如果您不这样想,整个宏将被破坏。如果希望宏可靠,

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

是的,您可以通过理解宏记录击键,而不是命令的结果,并据此采取行动来解决这个问题

例如,当您将上一次搜索与
/
/
一起使用时,不会记录上一次搜索寄存器的实际内容。下次播放该宏时,最后的搜索模式可能会有所不同,如果您不这样想,整个宏将被破坏。如果希望宏可靠,则必须实际键入搜索模式或作为录制的一部分执行搜索

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

qq (做事) Q
“qp

记住这一点,在录制宏时不要使用此类历史记录回调命令。这可能不太方便,但无论如何,您可能会在重复的宏应用程序上分摊工作

实际上,精明的实践者可以使用宏的这种行为作为一种功能。例如,通过参考上一个搜索模式(例如
:s/…
)或调用部分命令(例如
:w foo
),可以记录适用于各种情况的宏

最后,您可以在意识到宏已损坏后“修复”宏;由于宏的内容存储在寄存器中,您可以通过以下方式重新编辑宏:

:let @a = <C-r><C-r>=string(@a)<CR>
:让@a==字符串(@a)

你能举个例子说明为什么必须按向上/向下键吗?