常常我們都以為用 Vim 是為了用超快速度來輸入文字, 或許可以透過不一樣的想法來思考 我們來假設一個情境,我想把某個 function 的參數改掉,那我的作法應該是
- 找到我要的那個括號
- 決定我要刪掉哪些參數以及新增什麼
- 把目標從從左到右框起來,精確的說是 反白
- 接下來按
delete
或backspace
- 輸入新的參數
- 完成!
接下來我們來看一下如果是 Vim,我們的作法是
- 找到我要的那個括號
- 決定我要刪掉哪些參數以及新增什麼
- 刪除參數
- 輸入新的參數
- 完成! 好了,當殘酷的事實比較之下,發現差一步。
誒,差一步有很重要嗎?我的答案是:「有!謝謝」 為何? 這個動作在我們一天寫程式的行為裡面,出現過數次,如果你每一次都要把東西圈起來然後刪掉, 一次還好,但是十次真的會有點煩啊,你不止會改參數,你還會改字串內容、改變數名、再改註解, 刪整行,刪到底,改任何東西,這樣一直圈,你真的會受不了,你現在還沒受不了一定是你妥協了。 而且你會一直需要透過滑鼠來寫程式,這很不舒服啊,因為你的右手食指會在滑鼠左鍵及 J 之間滑動,
怎麼看都會增加右手的負擔。 最後一點,vim 可以透過手的反射來對程式操作這些程式碼,怎麼說呢?在選取這些程式碼的時候,眼睛和手就必須要專心的注意圈到哪,但如果透過 ci(
這類的指令,可以保證一定會把小括號的東西全部刪掉,不用透過眼睛和手的協調來確認,可以更專心在程式的本身,而不是編輯程式這個動作上。
總結一下,服了 vim 這帖藥,不一定可以讓你成為程式高手,但可以
- 在處理煩人的鎖事,比別人不煩,如改字串內容
- 讓你的右手食指可以有較長的時間在 J 上 透過反射神經來寫程式 ( 聽起來有點浮誇 )
如果你學會用 vim 的 text object,你這輩子不會想離開他了。