2014-10-19 87 views
2

我注意到我可以在vim中使用搜索功能使用正則表達式函數,當我輸入setting incsearch時,我可以看到hilights。但是,這並沒有爲找工作和替換查詢像這樣的:Vim:替換查詢的Incsearch

:%s/std::regex\s\([_a-zA-Z]*\)(/regex_t \1 = dregc(/gc

這一個讓我感到驚訝,當它實際工作。


是否有設置或插件VIM,像incsearch只有更好,會突出你的更換查詢您鍵入?只要突出顯示這些比賽會非常整齊,但將新舊字符串放在不同的高亮顏色旁邊會是天賜之物,因爲我可能不確定反向引用。

+1

「雖然他們是有限的」?你缺少哪些功能?語法不同,但Vim支持大多數Perl正則表達式的概念。 – Ben 2014-10-20 03:26:44

+0

其實,現在我再次檢查它,搜索功能缺失的唯一東西是顯示反向引用。我記得有一些括號存在問題,但我現在無法複製,因此我將刪除該短語。 – SimLeek 2014-10-20 03:45:20

回答

5

您可能正在尋找vim-over

這是一個插件:(澄清,讓我們說,我們正在做:%s/foo/bar/g)一)突出匹配在緩衝區(foo)和任選二)預覽置換(bar後什麼)替代。

+0

捆綁安裝並測試。它甚至適用於正則表達式!我唯一的抱怨是,我必須使用':OverCommandLine'而不是':%s',但我可以將該函數映射到某個鍵以節省時間。 – SimLeek 2014-10-19 23:37:11

+1

使用設置:'映射:OverCommandLine /',' 映射:OverCommandLine %S /'和'地圖R:重做我的.vimrc ',我現在可以使用凱映射,大多數編輯使用。 – SimLeek 2014-10-20 00:14:07

5

不是直接回答你的問題,但傳統上在Vim中你第一次手藝搜索正則表達式,如:

/regex

然後你打進入來執行它。設置:set hlsearch:set incsearch可以很容易看到。然後,你可以這樣做:

:%s//replace

隨着:%s指定搜索,(作用於%小號 ubstitute,一個shorctut這意味着文件中的所有行)將使用您指定的最後一個搜索詞。

往前一步,你可以再做

:%s/~/replace2

它取代您的最後一個換人(在這種情況下,replace1)與replace2

無關的,它可能是有用的,你把這個在您的.vimrc

set gdefault

這將使所有替換默認全局的,所以你不必每次:%s命令後需要/g標誌。

+0

的確,這不是對我的問題的直接回答,但我不知道':%s /〜/ replace2'或'gdefault',所以這很有幫助。 – SimLeek 2014-10-20 04:17:10