Vim

前言

在十年前開始接觸 FreeBSD 的時候,就聽聞過 Vi/Vim 這東西,那時候第一眼的感覺是:「這東西看起來好陽春,功能一定也很陽春」。當時在終端機上也還有別的編輯器可以選擇,例如 Joe、Nano 等,而且在本機的作業系統(Windows)也有其它的選擇,例如 UltraEdit。

以前會覺得寫程式、開發軟體,沒有 IDE 一定沒辦法。有些程式、軟體的確是需要 IDE 的幫忙,不然不知道怎麼寫。直到近幾年的工作幾乎用的都是文字編輯器,才發現其實文字編輯器可以做的事情相當多。二年多前開始把作業系統換成 Mac OS 之後,除了要寫 Flash 需要開 Flash IDE + Flash Builder 之外,其它幾乎就是只用TextMate了。雖然說它的中文顯示問題一直被大家嫌到不行,而且傳說中的 2.0 版也一直沒消息,但它依舊是我開發上的首選工具。

TextMate 2 實在是讓人等太久了,所以大家開始找它的替代品。不久前發現Sublime Text 2這個編輯器,它的中文字是正常的,外掛看起來也滿夠用的,而且還可以吃 TextMate 的 bundle 跟 theme,本來打算換過去的時候突然出現 TextMate 2 的消息了,聽說中文顯示是正常的。但這時候我卻想,我還要過著這種逐水草而居的生活到什麼時候? 難道沒有一款編輯器是可以學了之後就一直用的嗎?

這時候我想到不久前才剛過 20 歲生日的 Vi/Vim。雖然不久前陣子有練了一下手感,但沒認真下定決心要把它當成是自己吃飯的工具。於是,就找了個週末來認真的練了一下手感,發現出乎我意料的好用,之前在 TextMate/Sublime Text 2 上可以做的功能,在 Vim 幾乎都有替代品,我以前真的是錯怪它了!

以下大概是我目前有用到的外掛跟設定,不是很多,但就我自己工作上用得到的。這是我目前的樣子(其實 NERDTree 比我想像中的漂亮)

Vim

外掛與設定

我的.vimrc 設定

我把自己的設定檔跟用到的plugin放了一份在這裡,有興趣的朋友可以參考看看 :)

我用到的外掛:

Pathogen

用來管理外掛的外掛。以前安裝外掛,常常得把一包程式裡的各個資料夾到處撒在 ~/.vim 資料夾裡,現在透過 pathogen 的話只要放在 ~/.vim/bundle 裡就差不多行了,相當方便。

NerdTree && NerdTreeTab

Vim 的檔案總管啦,當資料夾一多,沒有它不知道該怎麼工作了。

我在 .vimrc 裡有把 NERDTreeToggle 設定到 F2 鍵上,這樣就可以快速的打開、關閉了。

NerdCommenter

用這個可以方便的幫程式碼來做註解

SnipMate

看名字就知道它是從 TextMate 借過來的,如果覺得有不足的也可以自己建。

Command-T

TextMate 跟 Sublime Text 2 都有可以快速搜尋檔案的功能,這個則是補足了 Vim 這方面的功能,也是我決定把 Vim 當做主要工具的原因之一。

Surround

可以很快的處理單引號、雙引號以及一些 html 常用的 tag 的問題,熟練的話會很方便。

Repeat

Vim 內建的 repeat 功能在遇到某些事件的時候似乎會失效,加上這個外掛就沒問題了。

EasyMotion

可以在不需要滑鼠的幫助下,快速的切換游標的位置。

幾個自己有在用的 syntax highlight 以及配色

發現我幾乎整篇都是偷懶的直接貼別人的影片啊 Orz

另外如果你本來在 TextMate 下有喜歡的配色,也可以透過這個工具來轉成給 Vim 的格式。

有些外掛的更新後續都是在 GitHub 上,要用的時候請注意最後更新日期。

其它工具

Alfred

付費軟體。有這個工具的幫忙,原本螢幕下方放滿的工具就可以少放很多了,要開軟體也不需要用滑鼠去點,只要輸入幾個關鍵字就可以跳出來:

Vimium

讓瀏覽器也用 Vim 的操作方式來瀏覽(Chrome 限定)

Vimperator

Firefox 也有類似功能的外掛可以用,感謝老杨提供。

結論

自己順手的兵器,其實應該只要一把就夠了。雖然我用的是 MacVim,但會儘量避免用太多 Mac 專屬的設定,這樣一來我在本機的作業環境(Mac OS、Windows、Ubuntu)在切換的時候都可以有差不多的編輯習慣,甚至連遠端終端機作業的時候也不會差很多。

Vim 很強大,但它不是一個可以一、兩天就能上手的工具。我相信只要學得好,它絕對是可以到哪裡都走透透的兵器。現在還不夠熟,不過我相信一直強迫自己用下去,遲早可以跟它變好朋友。(像這篇文章就是在 Vim 底下打的,打得很不順,但就強迫自己練習)。接下來應該就是繼續把它再磨利一點,再練得順手一些,讓自己可以更快的完成工作,有更多時間可以做自己想做的事,以及陪家人(講是這樣講.. 但大概會花更多時間再寫更多的程式碼吧)

各位如果有不錯的外掛也歡迎留言一起討論囉 :)