2010-11-02 116 views
13

幾個月後,我越來越習慣Vim。 但是,只有一個簡單的功能,我無法從網上得到任何答案。即「搜索並替換結果」。問題是,我才知道:Vim - 搜索並替換結果

:/關鍵字進行搜索,並點擊進入「關鍵字」將被高亮顯示(當然與集hlsearch) N,或N導航

:%s /關鍵字/ new_keyword/g用new_keyword替換所有關鍵字的出現。

但是,我認爲必須有一種方法來搜索,並用任何new_keyword替換匹配的關鍵字(突出顯示),而不用執行「:%s/keyword/new_keyword/g」,這是很多打字考慮搜索&替換就是這樣的日常功能。

任何答案/意見將不勝感激!

回答

27

如果你已經做了搜索,你可以通過簡單地留出的替代命令模式做同樣的模式取代。例如:

/keyword 

搜尋SEARCH_TERM_EXAMPLES 「關鍵字」,然後:

:%s//new_keyword/g 

將取代的 「關鍵詞」 與 「new_keyword」 所有出現。

+1

不知道那個,非常有用。 – meagar 2010-11-02 21:27:01

+1

不錯 - 我在一段時間裏添加到「vim智慧」列表中的第一件事。 – Stew 2010-11-02 21:34:08

+0

感謝勞倫斯,這正是我想要的,我不是一個更開心的Vim用戶:)乾杯! – Khiet 2010-11-02 22:00:32

3

搜索並使用點命令(你沒有meantion您使用的是點的命令,這就是爲什麼我強調它),重複上次的輸入動作是在這裏我最好的選擇。

我使用s /// G的搜索和替換。

+0

感謝Ronny,對我來說不是一個有效的通用解決方案,但讓我想起了一個重要的Vim命令「。」。乾杯!!! – Khiet 2010-11-02 22:08:38

+0

這是最重要的命令! – 2010-11-02 22:16:34

1

移動到第一個突出顯示的文字,然後錄製宏替換詞,並移動到下一個,如:

 
gg 
n 
qq 
caw new_word^[ 
n 
q 
@q 
@@ 
@@ 
... 
+0

這是一個*更多打字的地獄*,而不是簡單地將關鍵字重新輸入到':%s /.../.../ g' – meagar 2010-11-02 21:28:06

+0

@meagar:true,但問題不在於如何在最少的擊鍵次數,只是如何做到這一點:%s – Cercerilla 2010-11-02 21:32:01

+0

@meagar:不是當你只需按'.'來繼續做同樣的事情。 – 2010-11-02 21:32:08

2

好吧,既然#關鍵字#和#new_keyword#佔大多數字符,並且您需要一些方法來區分它們(例如,vim中的字符,或者在不同編輯器中的對話框中的輸入字段之間的選項卡),則可能會剩下四到五個擊鍵。所以我認爲你可能高估了按鍵的次數,並且忘記了(1)它變得非常自然,並且(2)以這種方式工作允許你也自然地修改通過指定不同範圍或選項而執行的動作旗。

但是你可以減少對按鍵。如果你想要的話,你可以映射一個鍵來自動調出'%s /'的命令行。例如: -

nmap s :%s/ 

上面的命令將重新映射「S」(我不建議重新映射到按鍵,但它給的想法),並設置你插入關鍵字。

此外,您還可以設置「gdefault」選項默認爲每線代替多次。這使您可以跳過結束/ G'在你的按鍵:

set gdefault 

參見「:H gdefault」關於該選項幫助部分。

最後我會說剛習慣了它的默認工作方式,因爲使用它可以讓你保持相同的基本操作,當你想指定不同的範圍或選項標誌,並創建一個新的特殊地圖是還有一件事要記住。 gdefault可能值得設置,如果你認爲你要大部分時間需要它,在gdefault設置時添加/ g標誌會導致/ g關閉。 。 。

+0

非常感謝Herbert,很多有用的信息和提示。特別是,我發現設置gdefault,和/ g動態復位是美麗的,不知道。乾杯!!! – Khiet 2010-11-02 22:05:36