2011-06-07 122 views
3

我經常做一些搜索(使用熱鍵,菜單命令或命令行)之後,我想保持第一搜索和添加其他搜索..VIM:結合兩個搜索

體育
- 首先我在我的文本中搜索雙倍空間。
- 然後我想保留匹配並添加搜索所有行尾空格

有沒有辦法將2個搜索結合起來?

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

回答

2

你可以這樣做:

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

其中newSearch是您的新的搜索字符串。這樣做只是做搜索單獨的一個很好的方式,以確保你得到你想要的東西,然後用它們組合起來:

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

你可以這樣做重複建設相當長的搜索字符串,因爲它建立了一個新的在歷史中搜索字符串。

這只是或者是一起搜索,這與您所問的內容並不完全相同(因爲它不保留相同的匹配)。它只是連接搜索條件 - 但我懷疑這是你的意思。

+0

謝謝...但不容易使這項工作,因爲我想繼續在搜索歷史窗口中找到奇怪的東西。 – Reman 2011-06-07 13:33:24

+0

每次將此代碼添加到我的搜索歷史記錄窗口中時:\ V \^\ zs \(\。\ { - } \)\ $'是VIM在搜索歷史記錄窗口中搜索時的「/」和箭頭嗎? – Reman 2011-06-07 13:42:06

+0

@Remonn:我認爲你必須有一個自動命令來進行搜索(或不太可能)替代。解釋正則表達式,它看起來像匹配以空格開頭的行。那響鈴嗎? – 2011-06-07 18:15:46

2

你可以只按Esc鍵然後再\向上箭頭通過您的搜索捲回並編輯您以前的搜索,以包含額外項。因此,第一個向上箭頭將顯示您的最後一次搜索。

你想搜索的文本_pipe(所以你鍵入: Esc鍵/_pipe(

現在,您要添加到搜索和決定以及_pipe(這將是有用的只包括參數option所以你輸入: Esc/向上箭頭

,然後編輯您以前的搜索閱讀/_pipe(.*option.*)

這就是現在使用的是從先前的搜索更新的新的搜索。

+4

要處理先前的搜索,您還可以使用'q /'編輯以前輸入的搜索。在新打開的窗口中,您可以使用所有常用的Vim命令(插入,粘貼,更改等)。 – 2011-06-07 08:10:02

+0

@Xavier偉大的提示,我不知道。 – 2011-06-07 08:21:39

2

在普通模式下,你可以使用一次搜索寄存器("/)回想起自己最近的搜索模式:

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

其分解:

  • <C-r>CTRL + R,它會帶來一個",所以你可以選擇一個註冊,
  • /選擇搜索註冊,
  • \|添加另一種模式在您的搜索(OR
  • \(\[ ]\+$\)搜索和組尾隨空格。
+0

thak你。我知道這一個。但它不適用於搜索歷史-2 – Reman 2011-06-07 13:34:40

+0

如果您逐漸添加搜索模式,則它按定義工作。如果你想回想起第二個搜索模式,那當然是行不通的。 – 2011-06-07 13:51:36