2005年5月,我開始用Vim。此后漸入佳境,原來因版權(quán)自律而放棄盜版UltraEdit的遺憾一掃而空。并且,從Vim我才體會到,什么才是真正的編輯利器。在善用佳軟或其他論壇發(fā)文,我都是先在Vim中輸入,并方便高效地編輯好格式,再貼到網(wǎng)上。而我的通訊錄、記事、讀書筆記、工作記錄也是在Vim中完成的。包括一些文檔、數(shù)據(jù)的處理,讓Vim過一下,也會提高不少效率。一句話,自用Vim以來,對它迷戀日深,幾乎要超過Total Commander。但是,正如善用佳軟及論壇發(fā)文所提,我大力推薦“用IrfanView/XnView代替ACDSee、用7-zip代替WinRar/WinZip、用GIMP代替PhotoShop”,但并未推薦Vim代替UltraEdit。這并不意味著Vim不能勝任,恰恰相反,如果說IrfanView等替代品比原共享軟件還有些差距的話,Vim則遠(yuǎn)勝UltraEdit。不推薦的唯一原因是,Vim對初學(xué)者有點難。
但今天仍寫了此文推薦給大家。原因有二:其一,編輯大人選定了題目,要向大眾宣講Vim和Emacs,這種勇氣鼓舞了我。其二,已發(fā)兩位高手的文章(王垠之《Emacs是一種信仰!世界最強編輯器介紹》,Dieken之《程序員的編輯器——Vim》)可能會嚇住一些對它們產(chǎn)生了興趣的人,對此我要做些修正。 因此本文內(nèi)容有二:一是幫新手體驗Vim。這部分有些象實驗教程,多用實例,且行文風(fēng)格盡量傻瓜化,以便于新手(包括以前從未聽說過Vim)可以照我的操作,一步步體驗Vim。二是介紹我的應(yīng)用,即Vim如何便利我的日常工作和生活,而非編程。 1 對Vim的基本介紹 一句話介紹就是:Vim是一個超級超級強大的文本編輯器。它和Emacs是一個數(shù)量級;而我認(rèn)為,比UltraEdit、Editpad、EmEditor要高一個(至少半個數(shù)量級)。如果你有興趣,不妨一讀《程序員的編輯器——Vim》,以便于對Vim有更詳盡全面的理論認(rèn)識。 要點1:Vim及前身VI,歷史悠久(可能比多數(shù)讀者的年齡更大),經(jīng)歷了幾十年的考驗和發(fā)展,值得信賴。 要點2:Vim有模式。通俗地做一下對比。notepad無模式(或稱為只有一種編輯模式),你按下j,就是在正文中輸入j;要保存,就要ctrl+s;要下移一行,就要↓或鼠標(biāo)。而在Vim中,打開一個文件后,并不處在編輯模式,而是Normal模式,此時你按j,Vim并不認(rèn)為你要在正文中輸入j,而是代表光標(biāo)下移一行。此時按i表示進入insert模式,即編輯模式,即notepad的模式。編輯模式按Esc退回normal模式。normal模式下按:進入命令行模式,用于輸入較復(fù)雜的命令。比如:w代表保存文件,:e a.txt代表打開文件a.txt。即Vim可以不用鼠標(biāo)、方向鍵、菜單、Ctrl、alt……發(fā)出命令。因此,以下的體驗中切記進入正確的模式:Esc到Normal;Normal下i到編輯;Normal下:到命令行。再說明一點是:文中:打頭的是命令行模式,此外多數(shù)Normal模式。 要點3:復(fù)雜對抗復(fù)雜。Vim有的命令行很嚇人,長長一串字符恍若天書。這些貌似復(fù)雜,實際上無非是一些簡單命令的組合而已。借助于此,Vim用戶可以實現(xiàn)非常復(fù)雜的需求。如果你沒有這樣的需求,就無須理會它們。 要點4:一能百能。這一點是Unix或命令行風(fēng)格軟件的顯著長處,經(jīng)過實用可以深刻體會。本文盡管有一些例子,但它運用之妙,存乎一心的感覺,仍未能充分展示。這里先打個比方,如果windows下某軟件號稱能炒菜,那意味著你點一下菜單,菜就做好了——這就是易用哲學(xué)。到底怎么做,你是沒有多少發(fā)言權(quán)的,而是由軟件開發(fā)者固化。而如果Vim說能,那它就是有一個“炒菜”命令,你可以把這個命令與原有的“原料”“數(shù)量”“火候”“風(fēng)味”“灶具”命令結(jié)合在一起用,甚至在它前面加上“買菜”“洗菜”,后面加上“裝盤”“洗碗”做成一個自動腳本,在合適的情況下自動執(zhí)行。 要點5:無限靈活,個性由我。你只要有具體需求,Vim幾乎都能滿足。因此不同人的Vim是不一樣的,即,把下載來的Vim配置成自己的Vim。 就此打住,開始體驗之旅吧! 2 下載和安裝 Vim是跨平臺的。在Windows下,我們用的是gVim for windows版。最新的是7.0版,下載包約8MB,完全安裝后約20MB。 注:體積太大?你如果是高手,完全可以把不用的文件刪除(包括幫助文件,它是我見過的軟件中最好的幫助),精簡后的體積可以不到2MB?;蚍粗?,僅下載一個gVim.exe(1.5MB)就能運行。但對于這次體驗,鑒于第一次使用,建議全部按默認(rèn)項安裝,這樣才能達到文中預(yù)想的結(jié)果。 PCOnline下載,官方下載 安裝,基本上,一直Agree、Next就行了。我通常是裝在d:\program files\Vim下。 可參見 3 體驗之旅 3.1 初見界面 安裝完成后,按提示打開readme,你將看到 或自行打開桌面的快捷方式,也可直接運行d:\program files\Vim\Vim70\gVim.exe,你應(yīng)該看到如此界面: 什么?難看?土?我第一次見到它也是這種感覺,現(xiàn)在卻只覺得親切。 再一點,你有沒有奇怪它是中文界面?難道我給你下載的是漢化版?會不會捆綁流氓插件啊?你如果真這樣想,我只能嘆息無語了。 3.2 試讀html 請把此網(wǎng)頁保存為htm,比如test.htm,然后用Vim打開它。暫時用菜單吧!結(jié)果可能是這樣: 平平無奇,是吧?因為它是一個標(biāo)準(zhǔn)的Vim,并且是性能優(yōu)先,視效忽略的Vim。無妨,請進入命令行模式(就是按一下冒號,注意是英文冒號:),注意到最下面一行的變化了吧。再輸入sy on再回車。是不是有顏色了?它應(yīng)該看起來象這個樣子 重要提醒:為簡化起見,下文將用 :sy on 表示(先確認(rèn)在Normal模式,如不確認(rèn),請按幾次Esc)你先按:進入命令行模式,再輸入sy on,再回車。 補充說明:sy表示語法加亮,on當(dāng)然是打開。:sy clear表示取消加亮。 3.3 改頭換面 體驗Vim就要按Vim的思路,所以我們要把gVim改回Vim的本來面目。 對了,如果你認(rèn)為它的界面很土,請更要多看一眼當(dāng)前的樣子,因為下面的操作后可能會更土! 執(zhí)行如下命令 :set go= 這時的Vim應(yīng)該是 不要大驚小怪,不就是菜單和工具欄不見了嘛?Vim中是不應(yīng)該用到它們的。 補充說明:set表示一般性設(shè)置;go是gui option的縮寫,就是界面;等于空就是什么都沒有 再輸入半條命令(先不要回車) :colo ev 然后,按一下tab鍵。是不是自動補全為evening了?Vim是非常聰明的(但是不會象MS Word那樣自做聰明)。 然后你回車,看到了什么? 天色全黑了?沒錯,現(xiàn)在是evening嘛。 補充說明:colo就是設(shè)置調(diào)色方案。Vim自帶了近十種調(diào)色方案,當(dāng)然你還可以在網(wǎng)上下載更多,或改編自己的調(diào)色方案。你可以直接在:colo (加一個空格)就連續(xù)tab,選擇不同的配色方案來體驗一下。當(dāng)然,evening是比較經(jīng)典的一種。我一直就用它。 3.4 準(zhǔn)備并打開范例文件 簡化起見,請下載test.txt并保存為d:\test.txt。然后,在Vim中輸入半條命令 :tabnew d:\t 輸?shù)竭@里后不要回車,按一下tab,Vim會自動補全為test.txt的。如果不對,再按幾次tab,直到正確為止。然后回車。 你會看到Vim打開了test.txt,并且是以多頁簽(tab page)的方式。你可以點擊各頁簽在打開的文件中間切換(高手有更方便的鍵盤命令做法)。在Vim6.3中,還沒有此功能。當(dāng)然了,這并不意味著Vim的用戶沒辦法享受多頁簽的便利,下載一個插件后——Vim有上千個插件——就可以了。面對多頁簽風(fēng)格的流行(IE6→Maxthon→IE7),Vim7.0也新增了此功能。 我喜歡這種簡單的頁簽。如果你認(rèn)為此頁簽太難看,可試一下:set go=e 這時應(yīng)如下效果 3.5 統(tǒng)一格式,修改vimrc 上面所操作的各種命令,都是對Vim的設(shè)置。把它們寫到一個_Vimrc文件中就成了默認(rèn)選項。每個Vim用戶的_Vimrc文件都不一樣,因為每個人的需求不同。 為了保證下面的操作得到預(yù)期的效果,請使用善用佳軟提供的_Vimrc(附1)。依次執(zhí)行下述操作: ① 關(guān)閉所有的Vim ?、?找到你的d:\program files\Vim\Vim7\_vimrc,復(fù)制一份存檔。 ?、?用任意文本編輯器(Vim或記事本)打開_vimrc,用本文附1的內(nèi)容替換它,并保存。 ?、?重啟Vim。 注:這并不是標(biāo)準(zhǔn)做法,但對windows用戶是比較方便的做法。 3.6 打開test.txt 再次就模式進行提醒:Esc到Normal;Normal下i到編輯;Normal下:到命令行。 運行Vim,并在命令行執(zhí)行 :e d:\test.txt 接下來,我們把此文章排一下版。如果你認(rèn)為可以手工排版,請把此文件復(fù)制到10000行再發(fā)表意見。 3.7 分段并保存 3.8 繼續(xù)編輯 再試一下dd。是不是整行沒有了?沒關(guān)系,u回來就行了。 3.9 更多編輯 任務(wù)b:把行末的標(biāo)點去掉,即“榮”后的頓號和“恥”后的逗號。 任務(wù)c:錯落有致 補充說明:高手使用Vim是千變?nèi)f化的。上面的前2個操作(分行+刪標(biāo)點),完全可以合成一個:%s/\(為.\)./\1\r/gc;或再把第3個操作(錯落有致)融合到前一個操作中。 3.10 自由體驗 體驗自動補全:i進來吧,到目前為止還沒寫過字呢!為簡單起見,你直接把用鼠標(biāo)放到中文的下一行,我們把 Eight Do's and Eight Don'ts 輸入一遍。但是,輸入一個E,先別動!按ctrl+p是不是自動補全了? 體驗大小寫(每次操作后,都用u恢復(fù)原狀),試一下g~~和guu和gUU和g??(g??后可以不按u,再按一次g??也能恢復(fù)原狀) 3.11 體驗語法高亮和折疊 3.12 加密文件 set magic
set ru "標(biāo)尺信息
set ai
set sw=4
set ts=4
set dy=lastline "顯示最多行,不用@@
"以上是縮進相關(guān)
set backspace=indent,eol,start
colo evening
sy on
set go= "無菜單、工具欄
set nobackup
set hlsearch
set showmatch
"tab mappings
map <M-1> 1gt
map <M-2> 2gt
map <M-3> 3gt
map <M-4> 4gt
map <M-5> 5gt
map <M-6> 6gt
map <M-7> 7gt
map <M-8> 8gt
map <M-9> 9gt
map <M-t> :tabnew<CR>
map <M-w> :tabclose<CR>
map! <M-1> <esc>1gt
map! <M-2> <esc>2gt
map! <M-3> <esc>3gt
map! <M-4> <esc>4gt
map! <M-5> <esc>5gt
map! <M-6> <esc>6gt
map! <M-7> <esc>7gt
map! <M-8> <esc>8gt
map! <M-9> <esc>9gt
map! <M-t> <esc>:tabnew<CR>
map! <M-w> <esc>:tabclose<CR>
" Use CTRL-S for saving, also in Insert mode
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>
"2006-09-13 如下:保存視圖
au BufNewFile,BufRead *.tx1 setf tx1
|
|