星期一, 8月 17, 2009

vim: text-object

這幾天去 COSCUP 聽到蠻多有趣的東西,身為一個 vim, perl 狂熱者當然是要聽聽 c9s 的演講。雖說我從高中就開始用 vim 到現在少說也用了4~5 年,可是還是有很多好玩未發覺的功能阿!

--正題--
vim 將每個段落,或是block, word 分成一個個 "text object" 可以說就像是 HTML 裡面分成一層層的 tags 一樣,並且設計了描述方法針對某種 text object 做出動作。

我想,用了vim 一段時間的人都知道 'c' 很好用,直接替換文字而不用刪掉以後再進入 insert mode,c 搭配 text-object 的方法就像這樣:

ciw: 更換一整個 word, 跟 cw 不同的是,他會把目前游標在的整個 word 換掉而不是word 在游標以後的部分,可以說有點像是 b cw 的組合。

cib: 更換一個 block (由小括號括起來的)
ciB: 更換一個 Block (由大括號包起來的)

中間那個 i 代表的是 inner ,另外可以用的modifier 是 'a' (代表 一個),對於不同的 text-object 這兩種的分別不太一樣,不過大致上差別在於包覆 text-object 的 delimiter 是否一起被選取到。
例如 cab 的話會把括號也一起換掉,而 cib 只換括號裡面的東西。

敘述有點亂,如果要瞭解更多可以參考 vim 的 document

沒有留言: