星期三, 8月 19, 2009

學習 VIM

其實標題很難下,所以我就隨興下了一個標題 XD。

要學 VIM 其實不難,網路上四處找的到文章,不過我推薦下列簡報,我也不想在此重寫一篇,因為我不會寫的比 c9s 和 yzlin 來的好 :)

c9s 提的移動方法讓我受惠良多,yzlin 學長(他大概不記得我是誰了 XD) 所提及的不光只是 VIM,還有其他相當多實用的技巧與方法,相當值得讓我這種菜鳥學習。

其實說到使用軟體的觀點,最難的一點就是「認定」,我所謂的「認定」就是你覺得它很好用,可以用很久很久,而且有長久的更新支援,並且足以在你工作平台上有著良好運作。對我而言,要認定任何一個軟體或程式語言都是非常困難的,不過我想就我會使用 VIM 的原因來說明。

基本操作
就基本操作而言,VIM 分成三種模式,基本上在 normal mode,能輸入的字元都有功能,也有人因此做了一張對應表,其實從 c9s 的 slide 可以得知,基本上我們可以用方向鍵 + Page Up/Down or 滑鼠滾輪,來移動至相對位置,但是我們可以利用 vim key mapping 來進行更快速的移動。真的能省下多少時間嗎? 其實不知道,但是對於整體操作的順暢度會有很大的提升,簡單來說,就是操作的很爽,這方面,真的會讓人離開不了 VIM XD。

驚人的設定彈性
其實這個部分我還在摸索,如果真的要能夠完整掌握 vim 特性,唯一建議是,跟官方文件直球對絕吧 :) (pdf 版 有 237頁 XD),一般的 text editor 能夠設定的其實有限,但是 vim 的彈性之高,真是讓我嘆為觀止,我真的很佩服設計 VIM 架構的人,光以 syntax color 而論,或許 syntax file 是很多,但是整個 syntax file setting 和 color setting 的組合實在是非常有趣,而且 synatax file 有疊加的概念,C 的 syntax file 寫完了,C++ 可以接著繼續寫,這點就真的超有趣,更不論你可以針對特定檔案做出特別設定,如果願意,把 vim 最佳化成特定 programming language text editor 也不是一件困難的事 XD。

plugin
老實說我不知道 vim 的 plugin 個數多不多(約 2700 個),有好有壞,c9s 和 yzlin 都有推薦,可以試試看,端看自己是用什麼 programming language ,就看情況裝吧 XD。


學習曲線
c9s 在 slide 中坦言 VIM 的學習曲線很高,我同意,但是我想補充的是,使用者是可以訓練的,如果一開始就訓練到某種程度而可以讓他之後做的事更為順利,我認為這樣子的訓練是有必要的,舉個例子來說,用注音輸入法可以打出字來,但是新酷音輸入法就有詞庫可以預先訓練,讓你打字更方便(此舉是程式被訓練),但是也可以學習嘸蝦米輸入法,讓自己輸入中文更為便利,其實那一種方法好,端看自己。VIM 或許在一開始是較難以入手沒有錯,不過我相信過了陣痛期之後,我相信會帶給比大部分的 text editor 有著更美好的體驗。

Text Editor vs. IDE ?
到底要用 text editor 好還是 IDE 好? 其實兩個一起用也不錯,我因為平台跳來跳去的關係,我現在只有用 VIM + Eclipse ,兩者的共通點就是,跨平台,都有 plugin 網站 XD,沒有什麼一定好壞的選擇,可以兩者結合嗎? 當然可以啊,不過我目前還是可以在 command line 底下完成啊,我就懶了,VIM 在編輯方面有所長,但是整個專案在 Eclipse 底下,使用 基本的 Refactoring 真的蠻方便的,VIM 做的到,只是我懶的找方法了 XD,也沒有必要過度神化或操死一個軟體,不同的狀況下用不同的軟體也不錯 XD。

真的要用 VIM 嗎 XD? 其實你還有 emacs,找到認為最適合自己的 text editor 就是一件很開心的事!


---
似乎寫的有點亂...Orz

2 則留言:

Arrakeen 提到...

:D

yzlin 的 slide 充實多了,我的 slide 只能算拙作。 :p

挑選適當的工具,不管是什麼樣的工具,只要能夠 make us productive 就是好工具 :p vim 只能算是其中之一。

這就是 The Productive Programmer 一書的精隨呀 :p 不過話說在 PP 一書出來之前,這些其實都是不成文的 rule ,很少被拿出來當作主題分享。 :p

yen3 提到...

哈哈,你說我才知道有這本書耶,不過我一直都深信使用者是可訓練的這件事。

看來我還有很多東西要學 XD。