[vim ] 我所知道的search and replace

看板Editor (編輯器(vim/emacs))作者 (longsili)時間14年前 (2010/03/07 13:50), 編輯推噓8(800)
留言8則, 4人參與, 最新討論串1/1
(轉錄自技客快手筆記) 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

03/07 15:36, , 1F
如果要改的東西有特性-> regexp
03/07 15:36, 1F

03/07 15:37, , 2F
段落的話:20,40s/abc/foo/g 20-40行
03/07 15:37, 2F

03/07 15:37, , 3F
這是我習慣的用法:D
03/07 15:37, 3F

03/07 22:33, , 4F
何不用 gvim 提供的取代視窗? 不必執著於命令模式啊。
03/07 22:33, 4F

03/07 22:34, , 5F
命令模式很好用啊XDDD
03/07 22:34, 5F

03/08 03:30, , 6F
精通 vim 說搭配 g 更強大
03/08 03:30, 6F

03/08 17:53, , 7F
直接 Visual 選取之後,":s" 就可以對區塊搜尋了
03/08 17:53, 7F

03/08 17:54, , 8F
s/搜尋/取代
03/08 17:54, 8F
文章代碼(AID): #1BapwO0w (Editor)
文章代碼(AID): #1BapwO0w (Editor)