這篇文章是 VIM 用戶指南 系列文章中的一篇。
對(duì)一個(gè)程序員來(lái)說(shuō),選擇一個(gè)文本編輯器是一件非常重要的事。因?yàn)椴煌庉嬈髦g有著不少的差異:圖形界面或者非圖形界面、不同的快捷鍵、不同的編程語(yǔ)言支持、不同的插件以及自定義設(shè)置等等。我建議不是去搜索最棒的編輯器,而是去選擇最適合你的習(xí)慣且最適應(yīng)你的任務(wù)的那一個(gè)。假如你打算在一個(gè)團(tuán)體中工作,那么最好和你的共事者選擇一樣的編輯器。這樣的話,一旦你在使用中遇到問(wèn)題,你就可以去向他們尋求幫助。
這正是我在幾年之前開(kāi)始使用 Vim 的原因。通常來(lái)說(shuō),Vim 會(huì)被置于傳說(shuō)中的 Emacs 的對(duì)立面。我承認(rèn)我對(duì) Emacs 知之甚少,但是對(duì)于它倆,你需要知道的是它們都可以被深度定制,并且在初學(xué)時(shí)也都非常令人困惑。這個(gè)教程并不會(huì)介紹有關(guān) Vim 的所有內(nèi)容,而是將介紹一些基礎(chǔ)以使你在最初就能正確使用它,隨后還會(huì)展示一些小技巧,借此(希望能)讓你有能力自己去探索學(xué)習(xí)。
Vim 一詞來(lái)源于 “Vi IMproved”。Vi 是一個(gè)被廣泛安裝于 Unix 系統(tǒng)的非圖形界面文本編輯器,并且它也被默認(rèn)安裝在了 Linux 系統(tǒng)中。Vim 是這個(gè)原始編輯器的增強(qiáng)版,但是不同于 Vi,并不是每個(gè)發(fā)行版都默認(rèn)安裝了它。
安裝
在 Ubuntu 中可以使用如下命令來(lái)安裝 Vim:
sudo apt-get install vim
如果你已經(jīng)對(duì)某些插件有了興趣,使用以下命令:
sudo apt-cache search vim
這命令將給你輸出一個(gè)很長(zhǎng)的和 Vim 有關(guān)的包列表。在這之中,有針對(duì)不同編程語(yǔ)言的工具,有插件管理器,等等。
在這系列教程中,我將會(huì)在 Ubuntu 上使用最新版的 Vim(7.3.154,LCTT 譯注:現(xiàn)在最新版為 8.0)。當(dāng)然你也可以使用其它任何版本。
熱身
在終端輸入 vim 命令,你將會(huì)看到一個(gè)非常棒的歡迎界面。
(譯注:看到了歡迎界面中那行“Help poor children in Uganda!” 了嗎?)
如果你之前從未使用過(guò) Vi 或者 Vim,那么你很可能甚至不知道該怎么退出它... 是的,這是事實(shí)。任何你常用的快捷鍵在 Vim 中都將失去原有的效果。(譯注:網(wǎng)上有個(gè)流傳的笑話——“如何制造亂碼”,“讓新手退出 vi”)
首先,要使用任何命令式的功能,像保存或者退出,你都先得輸入一個(gè)冒號(hào)(:)。保存是 :w 而退出是 :q。如果你想不保存文件就退出,那么就要使用強(qiáng)制退出命令 :q!。Vim 中非常棒的一點(diǎn)是你不需要分開(kāi)輸入各個(gè)命令,換言之,如果你想保存然后退出,你就可以直接使用 :wq。
現(xiàn)在,我們退出 Vim 再打開(kāi)一個(gè)文本文件。為此,你只需把想要編輯的文件名加在命令后面即可:
vim [文本文件名]
一般而言,當(dāng)你打開(kāi)一個(gè)文本文件,你將會(huì)處在查看模式。這使得 Vim 與眾不同并且最初會(huì)讓人感到困惑。Vim 主要由兩種模式構(gòu)成:查看模式和編輯模式。查看模式用于查看內(nèi)容并且使用一些命令。想要進(jìn)入編輯模式,只需按 i 鍵進(jìn)行插入或者 a 鍵進(jìn)行添加。想要返回到查看模式或者進(jìn)行命令式功能的操作,按 Escape 鍵即可。插入和添加的差異僅僅在于你是想在光標(biāo)位置之前還是在光標(biāo)之后進(jìn)入編輯模式并進(jìn)行文字輸入。要想徹底地明白,你應(yīng)該親自去嘗試一下。我的建議是:僅在行尾使用添加,而在其它時(shí)候使用插入。
(譯注:此段落中“查看模式”原文是 “visual mode”,疑為“view mode”,在此模式下可以查看文本,但是不能進(jìn)行編輯;而“visual mode” 是編輯模式的一種,可以按 v 鍵進(jìn)入,然后就可以用方向鍵從當(dāng)前光標(biāo)位置開(kāi)始進(jìn)行選擇,并以反白的視覺(jué)效果顯示,通常選擇后可以按 y 進(jìn)行復(fù)制、按 d 進(jìn)行剪切等操作。此外, 本文作者的用語(yǔ)并不標(biāo)準(zhǔn),按照 Vim 自己的用語(yǔ)來(lái)說(shuō),此處所謂的“查看模式”,應(yīng)該稱之為“普通模式”,“編輯模式”應(yīng)該稱之為“插入模式”,不過(guò)意思是一致的。)
要想在文本之中移動(dòng)光標(biāo),你通??梢允褂面I盤(pán)上的方向鍵,它們無(wú)論是在查看模式還是在編輯模式都可以生效。不過(guò),一個(gè)真正的純粹主義者將會(huì)告訴你使用按鍵 h 向左,j 向下,k 向上,l 向右來(lái)(在查看模式)進(jìn)行移動(dòng)。
現(xiàn)在你已經(jīng)明白了如何和簡(jiǎn)單地控制 Vim,我們?cè)賮?lái)更加深入一些。
一些簡(jiǎn)單命令
現(xiàn)在你已經(jīng)熟悉了在正常模式和插入模式之間進(jìn)行切換,下面是一些可以在正常模式中使用的命令:
x:刪除一個(gè)字符
u:撤銷(xiāo)一個(gè)操作(相當(dāng)與 Ctrl+z)
dd:刪除一行內(nèi)容
dw:刪除一個(gè)單詞
yy:復(fù)制一行內(nèi)容
yw:復(fù)制一個(gè)單詞
p:粘貼一個(gè)之前刪除或復(fù)制的行或者單詞
e:跳到下個(gè)單詞(LCTT 譯注:詞尾)(比單純用方向鍵更快)
r:替換一個(gè)字母(按 r,松開(kāi),然后再按新字母)
當(dāng)然不止這些,不過(guò)這些對(duì)現(xiàn)在來(lái)說(shuō)已經(jīng)足夠了。如果你掌握了上面的全部,你將能你很順溜地使用 Vim 了。
對(duì)于那些還想知道更多的人,我再多提一下。你可以在任何這些命令之前加上一個(gè)數(shù)值,那么這個(gè)命令將被重復(fù)執(zhí)行相應(yīng)的次數(shù)。例如,5x 將在當(dāng)前行連續(xù)刪除 5 個(gè)字母,而 3p 將會(huì)粘貼 3 次。
高級(jí)命令
最后,作為對(duì)你自己繼續(xù)探索的鼓勵(lì)和示例,這里給出幾個(gè)高級(jí)且常用的命令:
/所搜索的內(nèi)容:在文中搜索特定內(nèi)容
:sp 文本文件名:將屏幕水平分割成上下兩半,新文件展示在另一半。想要在兩側(cè)切換焦點(diǎn),可以使用 Ctrl+w 快捷鍵。
:vsp 文本文件名:同上,但是是垂直分割屏幕
Ctrl+Shift+C 和 Ctrl+Shift+V:在終端中復(fù)制和粘貼文本
:! 命令名:在 Vim 中運(yùn)行 Vim 外的終端命令,直接發(fā)送給 shell。例如,:! ls 將在不退出編輯器的同時(shí),顯示你當(dāng)前目錄內(nèi)的文件。
結(jié)論
我覺(jué)得你現(xiàn)在應(yīng)該已經(jīng)有了足夠的準(zhǔn)備來(lái)開(kāi)始使用 Vim。你還可以通過(guò)安裝各種插件,編輯 ~.vimrc 文件,或者在 shell 中輸入 vimtutor 命令來(lái)使用交互式教程以學(xué)到更多。