到底為啥我們要用一個這麼難用的 Vim - 與速度無關篇

常常我們都以為用 Vim 是為了用超快速度來輸入文字, 或許可以透過不一樣的想法來思考 我們來假設一個情境,我想把某個 function 的參數改掉,那我的作法應該是

  1. 找到我要的那個括號
  2. 決定我要刪掉哪些參數以及新增什麼
  3. 把目標從從左到右框起來,精確的說是 反白
  4. 接下來按 deletebackspace
  5. 輸入新的參數
  6. 完成!

接下來我們來看一下如果是 Vim,我們的作法是

  1. 找到我要的那個括號
  2. 決定我要刪掉哪些參數以及新增什麼
  3. 刪除參數
  4. 輸入新的參數
  5. 完成! 好了,當殘酷的事實比較之下,發現差一步。

誒,差一步有很重要嗎?我的答案是:「有!謝謝」 為何? 這個動作在我們一天寫程式的行為裡面,出現過數次,如果你每一次都要把東西圈起來然後刪掉, 一次還好,但是十次真的會有點煩啊,你不止會改參數,你還會改字串內容、改變數名、再改註解, 刪整行,刪到底,改任何東西,這樣一直圈,你真的會受不了,你現在還沒受不了一定是你妥協了。 而且你會一直需要透過滑鼠來寫程式,這很不舒服啊,因為你的右手食指會在滑鼠左鍵及 J 之間滑動,

怎麼看都會增加右手的負擔。 最後一點,vim 可以透過手的反射來對程式操作這些程式碼,怎麼說呢?在選取這些程式碼的時候,眼睛和手就必須要專心的注意圈到哪,但如果透過 ci( 這類的指令,可以保證一定會把小括號的東西全部刪掉,不用透過眼睛和手的協調來確認,可以更專心在程式的本身,而不是編輯程式這個動作上。

總結一下,服了 vim 這帖藥,不一定可以讓你成為程式高手,但可以

  • 在處理煩人的鎖事,比別人不煩,如改字串內容
  • 讓你的右手食指可以有較長的時間在 J 上 透過反射神經來寫程式 ( 聽起來有點浮誇 )

如果你學會用 vim 的 text object,你這輩子不會想離開他了。

參考連結: Vim speed is not really the point