作者longsili (longsili)
看板Editor
標題[vim ] 我所知道的search and replace
時間Sun Mar 7 13:50:13 2010
(轉錄自技客快手筆記)
http://quickteckiteasy.blogspot.com/
使用vim的人應該都知道vim search "/" 和 vim replace ":s"的強大。
如果再加上一些小技巧,
可以再發揮vim指令到更高段的境界。
技巧:search before replace。
通常在replace時,有時不敢全部替換,
所以會加上confirm :%s/foo/bar/cg
我個人是很不喜歡這個confirm,
因為我不知道現在是跳到哪個位置。
我的做法是,先search "/foo" ,把所有foo會出現的地方確認過。
然後再做replace。
做replace 可以寫個map,
nnoremap ss :%s/< C-R >//
指令"< C-R >/"可以插入剛剛search的文字。
技巧:visual mode search
使用 "/%V foo"
就只會在「上一次選取的區段」做search。
這樣子就會把搜尋的東西局限在某個區段,
然後再用上一個技巧按ss就可以了。
技巧:find next and repeat
搜尋要替換的字 "/foo"
做修改"cwbar"
搜尋下一個 "n"
repeat "."
輔助說明:
情況一:replace整個字。用"cw"
情況二:要在某個字前加bar_ 。用"ibar_"
情況三:要在某個字尾加_bar。在搜尋時要加/e
以這個例子來說我搜尋時就打"/foo/e"
之後就打"a_bar"就可以了。
這幾個技巧都是先搜尋,再做replace,
這樣子會對自己所做的replace比較有信心。
當然,別忘了搜尋時多利用regular expression,
可以做更多事。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.162.192
1F:推 dryman:如果要改的東西有特性-> regexp 03/07 15:36
2F:推 dryman:段落的話:20,40s/abc/foo/g 20-40行 03/07 15:37
3F:推 dryman:這是我習慣的用法:D 03/07 15:37
4F:推 oversky0:何不用 gvim 提供的取代視窗? 不必執著於命令模式啊。 03/07 22:33
5F:推 dryman:命令模式很好用啊XDDD 03/07 22:34
6F:推 Pash77:精通 vim 說搭配 g 更強大 03/08 03:30
7F:推 kornelius:直接 Visual 選取之後,":s" 就可以對區塊搜尋了 03/08 17:53
8F:推 kornelius:s/搜尋/取代 03/08 17:54