大家來學VIM(一個歷久彌新的編輯器)[一]
因为最近在学vim,所以转过来。里面是繁体,好多都是台湾的计算机术语,看的时候有点怪异,不过还是不影响阅读的。
?
前言
?
鑑於仍有許多人還沒找到順手的編輯器,而許多想學 vi 的人又覺得無從下手,因此在此提出一些個人的心得,希望能對這些朋友有點幫助。或許也減少一點 FAQ 吧!
真要深入的話,大多數的前輩都認為 vi 比 emacs(xemcas) 還難學。但誰又真的需要熟悉編輯器的所有功能呢?你大可以邊用邊學啊!需要用到的先學,其它的就放一邊,只要能善用一些常用到的功能,又何必要那麼深入呢?而且您在使用當中經常會發現一些新功能,這又會馬上讓您給賺到了。
?
?
為什麼選VIM?
最最重要的原因是可以正確處理中文!其它如 elvis,vile,nvi 在中文方面都會有問題。另外就是許多作業系統都有 VIM 可用。當然如果您不需要中文支援的話,也建議使用 elvis。vile 則有 emacs 的味道,而 nvi 大概是最忠於原味的了!至於原始 vi 的書已有中文翻譯(O'Reilly),各位到大一點的書局翻翻就有了。所以選定 VIM 做對象,兼述及 elvis,至少她不「排斥」中文。
?
VIM 代表 Vi IMproved。 elvis 可直接讀 HTML(可用來上網,但只有文字),binary,manpage 及 TeX(LaTeX)(不是只顯示程式碼喔!)檔,和 XA+CV 配合也可以用中文,但不能真正處理就是了! VIM 也不是真的能完全支援中文啦!有些細部的功能還是沒法度。大概 6.0 版的時候會更好!不過平常一般的編輯動作是沒問題。另一個原因是,VIM 是慈善軟體(CharityWare),如有贊助或評比得獎(前不久剛得過),所得皆救助烏干達孤兒,有點年紀的大概還記得"We Are The World" 這首歌吧!全球的藝人共同合唱的,就是救助這些孤兒(應該沒記錯吧!)。您要使用當然是免費,您要捐款贊助當然是不勉強啦!但如果有評比有獎金可拿的,您去投她一票就是功德無量了。
另外 vim 的規則表示式(regular express)頗完整,您也可借這個機會學 regexp,因為您在 sed,awk,perl,less,grep...中也是要用到,早點會 regexp 您生活在 Linux(Unix)的世界會更美好。學了 regexp 您會有點看不起 windows 系統中的尋找功能的。
由於是慈善軟體,廣結善緣,因此連中文繁體都支援,不簡單。但也因此最近的版本有點肥,但又不會太肥(比 xemacs 好多了啦!)。這麼可愛的軟體,能不用她嗎?
?
?
如何抓vim(elvis)?
?
http://www.vim.org/找個自己中意的 mirro 站抓。或許也順便抓 Win32 的可執行檔回來在 windows 系統中使用。別忘了 runtime 檔也要抓,否則會無法找到需要的檔案來執行。http://www.fh-wedel.de/elvis/index.htmlftp://ftp.pdx.edu/pub/elvis也可試試 elvis(當然是免費的)。CLE 的使用者也可以到:ftp://linux.tmtc.edu.tw/pub/CLE/i386/RedHat/RPMS抓最新版來安裝,省時省力,而且還把必要的中文設定都弄好。目前最新的版本,VIM 是 5.6,elvis 是 2.1-4。
?
編譯安裝
?
只講重點,避免囉嗦!
?
VIM:1. configure 時加上: --enable-multibyte --enable-xim 如果您使用 xcin2.3 的話,就不必了 --enable-fontset --enable-gui=gtk gtk+ 最好是 1.2.3 以上的版本,1.2.1 也是將就可以啦 !大家都用 gtk+ 了,您不會想編 Athena 或 Motif(lesstif)吧!而且後兩個版本的 GUI 就沒有漂亮的 icon 了(但有的人就是討厭這些無用的 icon)。 2. ~/.vimrc 加入: set fileencoding=taiwan set guifontset=英文字型,中文字型 設了 guifontset 就不能設 guifont 否則會優先使用 guifont,這樣就找不到中文字型了!console 下或 xterm 下的話,就看您用什麼字型就顯示什麼字型,和 guifontset 無關。英文字型要用固定字,建議使用危卵的 Andale Mono 這個字型,包您滿意,可去危卵抓,免費的。我個人是使用 180 的 Andale 字,配上 220 的中文字,絕配(1024x768)!哦!不要告訴我,您的 X server 還不能支援 TTF。 Windows 中文版無需設 guifontset,只要設 guifont 即可。
3. 使用 xcin2.3 的話還是得配合 XA+CV 主要是輸入的問題。 使用 xcin2.5 的話就不必 XA+CV 了,但您得另外設 xim, 請進入 VIM 後 :help xim。 4. locale 要設成 zh_TW.Big5,意思就是您的系統的 i18n 支援不能太差,我是使用 gvim-chinese shell script 來呼叫 gvim。 #!/bin/sh # gvim-chinese # unset LD_PRELOAD 如果您使用 xcin2.5x 的話 export LC_ALL=zh_TW.Big5 gvim "$@"elvis: elvis 沒什麼好說的,反正是靠 XA+CV 來顯示及輸入中文 。至於其他外觀調整,就請 man elvis。
?
?
勤前教育
VIM 的模式可有六種,為免初學的人搞混,仍依一般的分類分成三種:
1. Normal mode(common mode,以下簡稱 c-mode): 您一進入 VIM 就是處於 c-mode,只能下按鍵指令,不能輸入文字。這些指令可能是游標移動的指令,也可能是編輯指令或尋找替換指令。?
2. Insert mode(i-mode): 按 i 就會進入 i-mode,此時才可以鍵入文字,寫您的文章,按 Esc 又會回到 c-mode。?
3. Ed mode(common-line mode,e-mode): 按冒號:(別忘了 Shift 鍵)就會進入 e-mode,左下角會有一個冒號:出現可下 ed 指令。也是按 Esc 回 c-mode。反正正常狀態都是處於 c-mode,這樣才不會把您辛苦打字的文章給隨便搞亂掉。 ed 是一個很古老的行編輯器,就好像 DOS 下的 edline 一樣,vi,sed 這些編輯器都是從 ed 衍化而來的。當然 DOS 下的 edline 也是學 ed 而來的,但功能可就不能同日而語了!有興趣可 man ed 學看看,有些時候會只有 ed 可以用(當機救助的時候)。其它的模式就碰到時再說明了!
?
?
基本教練:step by step
?
1. 由命令列來開檔: vim test.txt 或 gvim test,txt 或 gvim-chinese test.txt 如果您的系統 vi 是 vim 的連結檔話,就可以直接用 vi test.txt。以下就直接用 vim 代表 vi,gvim,elvis 因操作是一樣的有不同的地方會加注說明。?
2. 先進入 vim 後再開檔: 進入 vim 後,使用冒號命令 :e test.txt,就可以編輯 test.txt 這個檔。1. 及 2. 這兩個開檔法,如果 test.txt 不存在的話,就會開一個以 test.txt 為名的新檔案。 如果是 gvim,可由 icon(gtk 版本才有)或功能表來叫出 file browser 來選看看您要編輯哪一個檔,但如果您是初學的話不建議您這麼做,vi 就是以按鍵快速聞名,這是她的優點,您還是學起來吧,不然沒有 GUI 的時候會很不習慣的。?
3. 編寫文件: 進入 vim 後,按 i 進入 i-mode,就可以編寫您的文件了。在 vim 游標的移動可以由方向鍵來移動。Backspace 鍵可消去前一個字元,中文的話是一個中文字。Del 鍵可刪除游標所在處的字元(中文字)。 原始 vi 是不能在 i-mode 隨意移動游標的,得進入 c-mode 才能移動,因此就常常要按 Esc 來變換模式。vim 及 elvis 都打破了這個規矩。?
4. 存檔、離開: 如果您寫好您的文件,就可以按 Esc 回到 c-mode,然後 :w 就會存檔(注意,是冒號命令),但還不會離開 vim,要離開可按 :q,就可以了!也可以合起來用,:wq,就樣就會存檔後離開。怎麼樣,也不會很難吧!只不過操作方式和別的編輯器不一樣罷了,這樣豈不是很有個性。:-) 盡量記住按鍵的意義,才不必死背,如 e 是 edit(編輯), w 是 write(寫入),q 是 quit(停止、離開)。?
好了,這是就編輯的整個過程。下回開始是詳述各部份的功能,把 vim 解剖開來講,您可以馬上現學現賣。由於 vi(m) 的操作方式很有個性,因此,用了一次就會記住有這麼一個功能,想忘也忘不了,但有時按鍵難免會忘記,但有這一種功能大概是忘不了的,查了幾次指令就可以記得住了。
?