学习vi和vim编辑器(1):vi文本编辑器
UNIX系統(tǒng)中有非常多編輯器。能夠分為兩種類型:行編輯器和全屏編輯器。行編輯器每次僅僅能在屏幕中顯示文件的一行,如ed和ex編輯器。全屏編輯器能夠在屏幕上顯示文件的一部分。
vi(讀為vee-eye)編輯器是UNIX_Like操作系統(tǒng)的標(biāo)準(zhǔn)文本編輯器。
vi是 visual editor的縮寫,vi編輯器屬于全屏編輯器。能夠在閱讀文件時(shí)當(dāng)場(chǎng)就改動(dòng)。而且立馬看到改動(dòng)后的結(jié)果。
對(duì)于新手而言,vi編輯器難度還是很大的,可是一旦熟悉了vi編輯器,可能就再也不想又一次使用其它“簡(jiǎn)單”的編輯器了。學(xué)習(xí)vi編輯器時(shí),要學(xué)著把編輯工作交給計(jì)算機(jī)。由于這本來就是計(jì)算機(jī)的工作。
vi編輯器有兩種模式:命令模式和插入模式。在命令模式中,所輸入的一切都會(huì)被vi編輯器解釋為輸入的命令。
而在插入模式中。所輸入的一切都會(huì)被當(dāng)做輸入的文本插入到正在編輯的文件。在vi編輯器中。命令有例如以下特點(diǎn):
?* 命令是大寫和小寫敏感的,也就是區(qū)分大小;
?* 輸入命令時(shí)。命令不會(huì)顯示在屏幕上;
?* 輸入完命令后不須要增加enter鍵。
同一時(shí)候有一組命令會(huì)顯示在屏幕的底端,在這些命令前有特殊的符號(hào)。比如冒號(hào)(:)用于開始全部的ex命令。vi編輯器使用的底層編輯器就是ex行編輯器。vi僅僅是其可視化的模式。因此能夠在vi編輯器中使用ex編輯器的命令。
既然是文本編輯器,那么首先須要學(xué)習(xí)的就是怎樣打開與關(guān)閉文件。能夠使用vi編輯器來編輯不論什么文本。須要說明的是,vi將須要編輯的文件內(nèi)容拷貝到內(nèi)存中的緩沖區(qū)中,因此我們改動(dòng)的僅僅是內(nèi)存中文件的副本,僅僅有將緩沖區(qū)里的文件內(nèi)容進(jìn)行存儲(chǔ),才干將對(duì)文件的編輯結(jié)果更新到磁盤中的文件里。
存儲(chǔ)緩沖區(qū)的文件內(nèi)容就是我們通常所說的“寫入文件”或者說“保存文件”。
打開文件: vi [filename]
?假設(shè)沒有指定filename。那么vi將打開一個(gè)未命名的緩沖區(qū)。當(dāng)我們將緩沖區(qū)里的內(nèi)容寫入到文件時(shí),此時(shí)須要指定filename。
假設(shè)filename當(dāng)前已經(jīng)存在,則是編輯一個(gè)已存在的文件,假設(shè)filename不存在,則相當(dāng)于創(chuàng)建一個(gè)新的文件(須要將創(chuàng)建的緩沖區(qū)保存才會(huì)真的產(chǎn)生一個(gè)名為filename的文件)。當(dāng)打開一個(gè)新的文件時(shí)。vi編輯器的底部狀態(tài)欄會(huì)有對(duì)應(yīng)消息。如圖所看到的:
打開文件時(shí)遇到的問題:
* 你覺得應(yīng)該是編輯一個(gè)現(xiàn)有文件,可是vi編輯器卻顯示 "[New File]"。這個(gè)問題能夠肯定的說是你輸入的文件名稱出錯(cuò)了。
* 出現(xiàn)例如以下圖所看到的的[readonly],"Permission denied"等消息。這是由于你對(duì)該文件沒有寫權(quán)限或者使用了vi編輯器的查看模式(vi -R)
* 輸入 :q 命令離開時(shí)。卻出現(xiàn)例如以下警告:
這是由于你改動(dòng)了文件(非常可能你自己都不知道改動(dòng)了哪里)。由于此時(shí)文件已經(jīng)發(fā)生了變動(dòng),vi編輯器一定會(huì)讓你選擇是否保存編輯結(jié)果才干離開。因此此時(shí)能夠使用 ZZ命令保存改動(dòng)結(jié)果然后退出,或者使用 :q! 不保存編輯結(jié)果然后離開。
保存與離開文件:
ZZ命令: 保存編輯結(jié)果,離開vi編輯器。還能夠使用ex命令來保存編輯結(jié)果, :w 命令僅僅保存(寫入)編輯結(jié)果,不離開編輯器。 :wq 命令保存編輯結(jié)果離開vi編輯器(:wq 與 ZZ 命令同樣)
結(jié)束而不保存編輯結(jié)果:
?:e! 命令:該命令能夠消除全部的編輯結(jié)果,直接回到近期一次存儲(chǔ)時(shí)的文件內(nèi)容,也就是說能夠“從頭再來”。 :q! 命令也是直接忽略當(dāng)前的編輯結(jié)果,回到上一次存儲(chǔ)時(shí)的文件內(nèi)容,同一時(shí)候離開vi編輯器。
為什么這兩個(gè)命令后面都有感嘆號(hào)呢。由于 :e 和 ?:q 命令都會(huì)讓當(dāng)前的編輯效果消失,而vi編輯器一般不會(huì)讓你放棄編輯結(jié)果。因此加上感嘆號(hào)后。就能夠使vi不理會(huì)這個(gè)禁令,直接將當(dāng)前的編輯結(jié)果放棄。回到近期一次存儲(chǔ)時(shí)的文件內(nèi)容。
保存文件時(shí)發(fā)生的問題:
* 寫了半天。發(fā)現(xiàn)沒有寫權(quán)限。 能夠使用 ?:w filename 將當(dāng)前結(jié)果寫入到一個(gè)新的文件(因?yàn)榇藭r(shí)會(huì)在文件夾中新創(chuàng)建一個(gè)文件,因此須要將該文件寫入到一個(gè)對(duì)你而言具有寫權(quán)限的文件夾下)
* 嘗試寫文件,卻發(fā)現(xiàn)文件系統(tǒng)已滿。
這個(gè)解決方法由非常多。一方面能夠?qū)⒃撐募懭氲骄哂惺S嗫臻g的文件系統(tǒng),還有一面能夠直接輸入: !sh 回到shell環(huán)境中刪除當(dāng)前文件系統(tǒng)的一些大文件。在ex命令中能夠用感嘆號(hào)后面接UNIX命令。直接運(yùn)行對(duì)應(yīng)的UNIX命令。例如以下圖所看到的,輸入 :!pwd 顯示當(dāng)前文件夾:
輸入命令之后就會(huì)臨時(shí)退出vi編輯器,顯示出命令運(yùn)行的結(jié)果:
此時(shí)按下enter鍵后就能又一次回到vi編輯器了。
本章vi編輯器命令總結(jié):
ZZ,:w, :q, :wq, :q!。 :e! 。?
總結(jié)
以上是生活随笔為你收集整理的学习vi和vim编辑器(1):vi文本编辑器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于copy_from_user函数
- 下一篇: ZSH and oh-my-zsh 强强