VIM:结合两次搜索

时间:2011-06-07 05:12:51

标签: search vim

我经常搜索某些内容(使用热键,菜单命令或命令行),之后我想保留第一个搜索并添加另一个搜索...

体育课。
- 首先,我在文本中搜索双打空格 - 然后我想保留匹配并添加搜索所有行尾空格

有没有办法合并2次搜索?

1)搜索1
2)按F9或其他键:ADD
3)搜索2

3 个答案:

答案 0 :(得分:2)

你可以这样做:

exe '/\('.histget('/',-1).'\)\|\('.newSearch.'\)'

其中newSearch是您的新搜索字符串。一个很好的方法就是单独进行搜索以确保得到你想要的东西,然后将它们组合起来:

exe '/\('.histget('/',-1).'\)\|\('.histget('/',-2).'\)'

您可以重复执行此操作以构建相当长的搜索字符串,因为它会在历史记录中构建新的搜索字符串。

这只是或者是一起搜索,这与你提出的问题并不完全相同(因为它没有保持相同的匹配)。它只是连接搜索条件 - 但我怀疑它就是你的意思。

答案 1 :(得分:2)

你可以按 Esc 然后 \ 然后向上箭头滚动回搜索并编辑你之前的搜索以包含额外的搜索术语。所以第一个向上箭头将显示您的上次搜索。

示例

您想搜索文字_pipe(,因此您输入了: Esc /_pipe(

您现在想要添加到该搜索并决定与_pipe(一样,仅包含带有参数option的那些将是有用的,因此您键入: Esc / 向上箭头

然后修改您之前的搜索以阅读/_pipe(.*option.*)

现在使用从上一次搜索更新的新搜索。

答案 2 :(得分:2)

在普通模式下,您可以使用最后一个搜索寄存器("/)来调用您的上一个搜索模式:

/<C-r>/\|\(\[ ]\+$\)

打破它:

  • <C-r> CTRL + r ,它会显示",因此您可以选择一个注册表,
  • / 选择搜索注册,
  • \|在搜索中添加其他模式(OR),
  • \(\[ ]\+$\)搜索并分组尾随空格。