2010-12-06 75 views
6

如何取回用於搜索或搜索的最後一個字符串&替換?在vim中獲取最後的搜索或搜索並替換字符串?

例如,假設我輸入:%s/some_text/some_other_text/gc,vim給我返回了E486: Patterns not found: some_text錯誤消息。然後我意識到我實際上打算寫some_magic_text而不是some_text。在那一點上,我怎樣才能找回我的原始字符串在底部命令行(或任何它被稱爲),所以我可以改變它並做第二次搜索?有沒有一個漂亮的小命令?

在這個簡短的例子中,它看起來沒有必要,但是當你想要替換的文本非常長,而且你只是輸入了一個錯誤的字母時,想要重新輸入所有內容是非常煩人的。

而且我正在使用MacVim,如果這有什麼不同。

回答

0

更一般地說,您可以通過輸入前幾個字符來調出以前輸入的任何命令,然後多次使用箭頭在歷史中導航。

在你的情況,你可以輸入:
:%s<Up>

:help history

6

從正常模式,打q/通過你的搜索歷史記錄導航!

1

這個答案可能是一個很好的改進,畢竟你是後。

使用突出顯示來搜索,以交互方式檢查您製作的正則表達式是否正在工作,然後將其用於搜索替換。

  1. :se isincsearch,最好把se is在.vimrc)
  2. /<search term>
  3. 檢查與n/N如果你很高興與比賽
  4. :s%//<replace term>/g

當省略<search term>在搜索替換4.中,l所使用的搜索將被使用。

用於獲取最後(搜索 - 替換)命令的列表,使用q:,或者已經注意到q/作爲最後的搜索項的列表。

獎勵:
當使用:se gds/<search>/<replace>將表現爲s/<search>/<replace>/g

然後,只要在每行中訪問第一個搜索匹配,就可以通過添加/g來完成,所以基本上這兩種行爲都只是切換。