?
一、開(kāi)篇
vim是一個(gè)文本編輯器,在幾乎所有的linux發(fā)行版中都有vi/vim編輯器,但是這個(gè)編輯器非常有特色,剛接觸的時(shí)候在使用上可能會(huì)非常不習(xí)慣。
在linux平臺(tái)下,如果不學(xué)習(xí)vim/vi,似乎感覺(jué)就少了點(diǎn)linux平臺(tái)下的靈魂。但如果是在linux發(fā)行版中,則完全可以不使用,可以安裝其他的軟件替代(linux發(fā)行版也自帶了一些文本編輯器:例如gedit),例如:VS Coder、Emacs等等。
但是,在嵌入式linux平臺(tái)(出于成本和性能原因,會(huì)取消掉桌面環(huán)境(也可能系統(tǒng)啟動(dòng)后直接就進(jìn)入應(yīng)用軟件了))和linux服務(wù)器上,一般就不會(huì)有桌面環(huán)境了。則會(huì)是一個(gè)冰冷的黑框框加提示字符出現(xiàn)在眼前,這時(shí)候,如果不懂點(diǎn)linux命令和vim操作,就玩不轉(zhuǎn)啦。
本文主要是描述vim使用的文檔,從剛接觸vim的角度出發(fā)來(lái)描寫。但是看完本篇文章,相信應(yīng)該能對(duì)vim的常規(guī)用法熟悉了,也可以滿足我們?cè)趯?shí)際工作學(xué)習(xí)中的使用需求(注:如果是vim“老鳥(niǎo)”,就跳過(guò)這篇文章吧)。
vim是vi的加強(qiáng)版,?vi的命令基本全部可以在vim上使用,而且比vi使用起來(lái)更加容易。所以在本文中,就不對(duì)vim和vi加以區(qū)分。
二、大招上線
(2-1)怎么打開(kāi)vi編輯器
在linux終端下,輸入vi filename
即可,vi
是固定用法(不變),filename
是文件名稱(在輸入命令時(shí)需要自定義),如果打開(kāi)的文件不存在,則會(huì)在內(nèi)存中創(chuàng)建一個(gè)新的(注意是在內(nèi)存中,意味著不保存就不會(huì)寫入硬盤);如果打開(kāi)的文件存在,則會(huì)直接以該文件內(nèi)容打開(kāi)。
例如:
則會(huì)創(chuàng)建一個(gè)iriczhao新文件:

(2-2)vi編輯器的三種模式
剛接觸vim編輯器的時(shí)候,可能鼠標(biāo)點(diǎn)擊半天沒(méi)有光標(biāo)提示,胡亂鍵盤敲一通,也許能干出幾個(gè)字符,也可能直接沒(méi)反應(yīng),傻眼,嘿哈。
在vi編輯器中,擁有三種模式:(1)一般模式(2)編輯模式(3)命令行模式。
當(dāng)剛使用vi打開(kāi)一個(gè)文件時(shí),則是處于一般模式,在一般模式下,可以使用鍵盤快捷移動(dòng)鼠標(biāo)光標(biāo)進(jìn)行定位;當(dāng)我們按下鍵盤上的i或者a時(shí)(i表示從光標(biāo)處的前面插入,a表示從光標(biāo)的后面插入),則會(huì)從一般模式進(jìn)入編輯模式,這時(shí)候則可以在里面想干啥就干啥,如果我們不想干那啥了,按下鍵盤上的ESC按鍵,就會(huì)從編輯模式回到一般模式。還有一種命令行模式,就是在一般模式下,按下鍵盤上的冒號(hào)(注意:條件是在一般模式下),則會(huì)從一般模式進(jìn)入命令行模式。
注:一般模式下,鍵盤上的字母可以看做是方向標(biāo)和控制命令,也是vi的靈活和強(qiáng)大之處。
- 在三種模式下,vi界面都會(huì)有標(biāo)識(shí):
在一般模式下,在編輯窗的左下角什么都不會(huì)顯示,當(dāng)我們按下一些鍵(例如b、e鍵等)會(huì)沒(méi)有反應(yīng)。
- 在編輯模式下,在左下角則會(huì)有提示:

- 在命令行模式下,左下角一般會(huì)有一個(gè)冒號(hào)(:):

好啦,知道了vi編輯器的三種模式,下文就來(lái)看看一些常規(guī)的操作。
三、闖關(guān)必備
(3-1)保存文件
當(dāng)我們編輯了一個(gè)文件,那肯定是要保存的,在命令行模式下,輸入wq,然后按下回車鍵,則可以保存文件:

上圖顯示創(chuàng)建了一個(gè)名文iriczhao的文件。
如果想不保存退出vi,進(jìn)入命令行模式,輸入q!
后按下回車鍵即可。
如果想保存當(dāng)前內(nèi)容而不退出vi,在命令行模式下,輸入w
按下回車鍵即可。
(3-2)移動(dòng)光標(biāo)
vi的強(qiáng)大之處,就是在一般模式下,他的光標(biāo)可以使用鍵盤上的按鍵來(lái)控制(專為脫離鼠標(biāo)而設(shè)計(jì))。我們可以按上下左右鍵來(lái)控制光標(biāo)的移動(dòng)。最標(biāo)準(zhǔn)的操作則是使用H J K L來(lái)控制:
-
H:向左移動(dòng)光標(biāo)
-
J:向下移動(dòng)光標(biāo)
-
K:向上移動(dòng)光標(biāo)
-
L:向右移動(dòng)光標(biāo)
在鍵盤布局上,這四個(gè)字母按鍵在一排上,就不用跳著敲鍵盤(這一點(diǎn)非常Nice)。
(3-3)快速移動(dòng)光標(biāo)
除了3-2所述的移動(dòng)光標(biāo)方法,我們還可以快速移動(dòng)光標(biāo),在一般模式下:
-
如果想將光標(biāo)定位到第一行:雙擊鍵盤上的g鍵。
-
如果想將光標(biāo)定位到最后一行:按下Shit + G鍵。
我們還可以定位到某一行(ngg,n指某一行的行號(hào)),例如,如果想定位到第5行,輸入5gg就可以了。
(3-4)文本復(fù)制和粘貼
我們?cè)趯?shí)際工作中,最喜歡的就是復(fù)制粘貼,在Windows上,Ctrl C / Ctrl V
就可以了,在vi中,則是y表示復(fù)制,p表示粘貼。
如果我們想向下復(fù)制當(dāng)前行,兩次按下y鍵,然后按p即可將光標(biāo)所在行向下復(fù)制(如果重復(fù)按p,則會(huì)重復(fù)向下復(fù)制)
如果我們想復(fù)制一段內(nèi)容,在一般模式下,按下v鍵,然后使用光標(biāo)移動(dòng)鍵選擇想要復(fù)制的內(nèi)容,完成后,按一次y鍵,然后將光標(biāo)定位到想要粘貼的行,按下p鍵即可將選中的內(nèi)容粘貼到當(dāng)前行下。
(3-5)文本刪除
如果想刪除某一行下的內(nèi)容,在一般模式下,按下v鍵,然后移動(dòng)光標(biāo)選擇想要?jiǎng)h除的內(nèi)容,按一次d即可。
如果想刪除光標(biāo)當(dāng)前行,按下dd就可以了。
如果想刪除從光標(biāo)當(dāng)前行開(kāi)始的n行,按下ndd即可。
上述操作是在一般模式下進(jìn)行的操作,但是很多時(shí)候我們需要?jiǎng)h除多行,這時(shí)候,可以在命令行模式下指定刪除范圍,格式為n1,n2d
,n1為開(kāi)始行,n2為結(jié)束行,d表示刪除。例如如果我們想刪除5-10行的內(nèi)容,即可在命令行下輸入5,10d
即可刪除。
(3-6)編輯器撤銷
在Windows上我們使用Ctrl Z
來(lái)撤銷,在vi中,則是在一般模式下,按下鍵盤上的U鍵來(lái)撤銷。如果我們想反撤銷,按下Ctrl R
即可。
注意,當(dāng)文本文件被關(guān)閉了,就不能做撤銷和反撤銷操作了
(3-7)編輯器查找
面對(duì)密密麻麻的文本,如果我們想查找具體的本文,我們可以在命令行模式下,輸入/
或?
來(lái)查找。例如如果我們想查找iriczhao,在命令行模式下,輸入/iriczhao
,按下回車,則會(huì)從光標(biāo)當(dāng)前行向下查找第一個(gè)匹配項(xiàng),如果接著按下N鍵,vi則會(huì)繼續(xù)向下查找匹配項(xiàng);如果我們想向上查找,需重新進(jìn)入命令行模式,輸入?irichao
,按下回車,則會(huì)從光標(biāo)處向上查找第一個(gè)匹配項(xiàng),如果接著按N鍵,則會(huì)繼續(xù)向上查找匹配項(xiàng)。
(3-8)編輯器替換
如果想替換vi中的文本,可按照替換格式:%s /old/new/g
進(jìn)行命令書寫,%s為固定寫法,old表示想要替換的文本,new表示用于替換的文本,g是固定用法,/也是固定寫法。例如,如果我們想將iriczhao文本替換成xiaoSheng,其寫法如下:
%s?/iriczhao/xiaoSheng/g
然后按下回車鍵,則會(huì)將所有的iriczhao替換成xiaoSheng。
四、結(jié)尾
本文描述了vi/vim的幾種常規(guī)操作,也是用得比較多的基本操作。對(duì)于學(xué)習(xí)vi/vim最好的方法,我想就是將她作為自己的默認(rèn)文本編輯器,時(shí)刻使用......
一些高級(jí)的vim命令和操作,在后面寫寫啦。
評(píng)論