在vim中,如何在缓冲区中保留搜索模式(倒数第二个搜索模式,而不是最后一个搜索)并在新搜索中使用它?

时间:2017-08-24 08:01:17

标签: search vim verilog

假设我有3个具有以下内容的idefile文件xfile1.txt,yfile2.txt和zfile3.txt。

mane
hind-leg
shell

我还有一个文件test.txt,如下所示。

xfile1.txt
{
lion mane
}

yfile2.txt
{
rabbit hind-leg   // line 8
}

zfile3.txt
{
turtle shell
}

我想通过定义q, my-macro-key, my-wanted-key-sequences, q并将其与@, my-macro-key一起用于以下操作来制作宏。我想要做的是,当我的光标被放置在hind-leg文件的第8行的test.txt中间时,当我按下@, z之类的宏键时,它打开yfile2.txt并将光标放在新打开文件中hind-leg的开头 因此,为了记录宏,我将光标放在文件test.txt中的后腿中间,然后按下q,z,b,*,ctrl-o,?,^,{,enter,k,g,f,*(开始宏记录for charter z,转到单词的开头,向前搜索,回来,反向搜索^{,上一行,输入文件(yfile2.txt),再次搜索模式。对于那些不知道前一个序列是什么的人......)。但最后一次*搜索' ^ {'因为这是我在此之前使用的最后一次搜索模式。我想在新打开的文件中使用搜索模式hind-leg 在这种情况下,如何使用旧的搜索模式hind-leg

1 个答案:

答案 0 :(得分:2)

回顾以前的搜索

您可以通过按命令行中调用以前的搜索模式。

或者,如果您想要选择以前的搜索模式列表,可以通过q/输入命令行窗口。这是一个完整的Vim缓冲区,因此您可以使用j / k进行导航,甚至可以使用/进行搜索,并以常规方式编辑以前的模式。按<Enter>选择当前行的模式。

在其他地方存储搜索模式

您可以通过"/p":选择寄存器,/:搜索模式寄存器,p aste)将当前搜索模式粘贴到(暂存)缓冲区中。不幸的是,你不能简单y回到搜索寄存器,但这样做:

:let @/ = getline('.')

或者,您也可以使用其他寄存器来存储模式。例如:

:let @a = @/
" Recall later
:let @/ = @a

还有histget('/')功能可以访问以前的搜索模式。