新聞中心
vi 編輯器使用向?qū)?/h2>
在 UNIX 操作系統(tǒng)中,文檔編輯器有很多種,其中最友好的工具就是 vi. 該文檔編輯器可以讓用戶(hù)在文件中基于上下文執(zhí)行編輯操作。

10年積累的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有門(mén)源免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
現(xiàn)在,用戶(hù)可以使用 vi 文檔編輯器的升級(jí)版 VIM.這里的 VIM 中的 M 就是源自改善的意思。
vi 通常會(huì)被認(rèn)為是 UNIX 編輯器的實(shí)施標(biāo)準(zhǔn),原因如下:
- 幾乎在所有 UNIX 系列操作系統(tǒng)中都有效。
- 它的具體實(shí)現(xiàn)都非常的類(lèi)似。
- 僅僅占用非常少的資源。
- 與其他編輯器相比,用戶(hù)界面更加友好。
用戶(hù)可以使用 vi 編輯器來(lái)編輯已經(jīng)存在的文件,當(dāng)然也可以使用它創(chuàng)建一個(gè)新的文件。此外,用戶(hù)也可以使用它來(lái)瀏覽一個(gè)文本文件。
開(kāi)始使用 vi 編輯器
用戶(hù)可以通過(guò)下面幾種方法來(lái)開(kāi)啟 vi 編輯器:
| 指令 | 描述 |
|---|---|
| vi filename | 如果文件不存在,則創(chuàng)建這個(gè)文件,否則打開(kāi)這個(gè)文件 |
| vi -R filename | 以只讀的方式打開(kāi)一個(gè)已存在的文件 |
| view filename | 以只讀的方式打開(kāi)一個(gè)已存在的文件 |
下面是一個(gè)創(chuàng)建新文件 testfile 的例子,當(dāng)然,前提是該文件在當(dāng)前目錄內(nèi)不存在。
$vi testfile然后用戶(hù)會(huì)在屏幕上看到如下顯示:
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File] 此時(shí),應(yīng)該注意到的是在每一行都的開(kāi)頭都會(huì)有一個(gè)波浪號(hào)(~),這個(gè)波浪號(hào)代表該行并沒(méi)有被使用。如果某一行沒(méi)有以波浪號(hào)開(kāi)頭,那么這就意味著有空格存在,也可能是換行符或其他的不易看見(jiàn)的符號(hào)。
所以,在我們正式使用 vi 編輯器之前,讓我們理解一些微小但是很重要的。
操作模式
使用 vi 編輯器時(shí)通常會(huì)在下面兩個(gè)模式之間來(lái)回切換:
- 指令模式:該模式下,用戶(hù)可以完成一些諸如保存文件、執(zhí)行指令、移動(dòng)光標(biāo)、剪切或粘貼某行(字符)、查找或替代的管理功能。在該模式下,用戶(hù)鍵入的所有內(nèi)容都會(huì)被系統(tǒng)當(dāng)做指令來(lái)執(zhí)行。
- 插入模式:該模式下,用戶(hù)可以往文件內(nèi),鍵入文本。在該模式下,用戶(hù)鍵入的所有內(nèi)容都會(huì)被當(dāng)做是文件輸入而最后保存在文本中。
vi 編輯器通常會(huì)以指令模式打開(kāi)。如果用戶(hù)希望鍵入文本的話(huà),用戶(hù)必須把當(dāng)前模式切換為插入模式。切換模式到插入模式時(shí),用戶(hù)可以簡(jiǎn)單的按 i 鍵。離開(kāi)插入模式,可以按 Esc 鍵。
值得注意的是,如果用戶(hù)不清楚當(dāng)前處于哪種模式,用戶(hù)可以按兩次 Esc 鍵,編輯器就會(huì)回到指令模式。用戶(hù)可以使用 vi 編輯器打開(kāi)一個(gè)文本,并且鍵入一些字符,然后切換到指令模式,體驗(yàn)一下這前后的差別。
離開(kāi) vi 編輯器
離開(kāi) vi 編輯器的指令是 :q 。在指令模式下,一旦鍵入冒號(hào)后跟字母 q,再單擊回車(chē)。如果文檔有修改的話(huà),編輯器會(huì)報(bào)出提示。如果不想看到這樣的提示信息,用戶(hù)可以使用 :q!。這個(gè)指令可以在不保存更改的情況下離開(kāi) vi 編輯器。
保存文檔的指令時(shí) :w。用戶(hù)可以將其與上述的離開(kāi)指令融合在一起使用,比如 :wq,然后單擊回車(chē)。
保存文件更新且退出的最快捷的方法就是 ZZ 指令。當(dāng)用戶(hù)在指令模式下鍵入 zz 指令后,效果等同于 :wq。
用戶(hù)也可以通過(guò)再 :w 后指定特定的文件名來(lái)指定不同的文件名來(lái)保存。比如,如果用戶(hù)希望將文件保存為 filename2,用戶(hù)可以鍵入:w filename2, 然后點(diǎn)擊回車(chē)。
在文件內(nèi)移動(dòng)光標(biāo)
為了在文件內(nèi)不影響文本內(nèi)容的情況下移動(dòng)光標(biāo),用戶(hù)必須在指令模式(連續(xù)兩次按下 Esc 鍵)下來(lái)操作。下面是文件內(nèi)移動(dòng)光標(biāo)的相關(guān)指令:
| 指令 | 描述 |
|---|---|
| k | 向上移動(dòng)一行 |
| j | 向下移動(dòng)一行 |
| h | 將光標(biāo)往左移動(dòng)一個(gè)字符 |
| l | 將光標(biāo)往右移動(dòng)一個(gè)字符 |
下面是兩個(gè)需要注意的重點(diǎn):
- vi 編譯器是大小寫(xiě)敏感的,所以用戶(hù)在指令模式下進(jìn)行操作時(shí)要注意大小寫(xiě)。
- 大部分 vi 編輯器中的指令都可以通過(guò)在動(dòng)作行為前加個(gè)數(shù)字來(lái)表明希望發(fā)生的次數(shù)。比如,2j 意味著希望光標(biāo)往下移動(dòng)兩行。
還有其他一些在文件內(nèi)移動(dòng)光標(biāo)的方法。需要格外注意的是必須在指令模式下來(lái)操作。下面是其他在文件內(nèi)移動(dòng)光標(biāo)的方法。
| 指令 | 描述 |
|---|---|
| 0 或 l | 光標(biāo)回到行首 |
| $ | 光標(biāo)回到行末尾 |
| w | 光標(biāo)移動(dòng)到下一個(gè)字 |
| b | 光標(biāo)移動(dòng)到前一個(gè)字 |
| ( | 光標(biāo)移動(dòng)到當(dāng)前句子的開(kāi)頭 |
| ) | 光標(biāo)移動(dòng)到下個(gè)句子的開(kāi)頭 |
| E | 光標(biāo)移動(dòng)空白分割單詞的末尾 |
| { | 光標(biāo)往后移動(dòng)一段 |
| } | 光標(biāo)往前移動(dòng)一段 |
| [[ | 光標(biāo)往后移動(dòng)一節(jié) |
| ]] | 光標(biāo)往前移動(dòng)一節(jié) |
| n| | 光標(biāo)移動(dòng)到當(dāng)前行的n列 |
| 1G | 光標(biāo)移動(dòng)到文件的第一行 |
| G | 光標(biāo)移動(dòng)到文件的最后一行 |
| nG | 光標(biāo)移動(dòng)到文件的第 n 行 |
| :n | 光標(biāo)移動(dòng)到文件的第 n 行 |
| fc | 光標(biāo)往前移動(dòng)到 c |
| Fc | 光標(biāo)往后移動(dòng)到 c |
| H | 光標(biāo)移動(dòng)到屏幕的首部 |
| nH | 光標(biāo)移動(dòng)到屏幕從頂部查第 n 行 |
| M | 光標(biāo)移動(dòng)到屏幕的中間 |
| L | 光標(biāo)移動(dòng)到屏幕的底部 |
| nL | 光標(biāo)移動(dòng)到從屏幕底部往上第 n 行 |
| :x | 光標(biāo)移動(dòng)到行號(hào)為 x 的行 |
Control指令
下面是一些和 Control 鍵配合使用的指令:
| 指令 | 描述 |
|---|---|
| CTRL+d | 向前移動(dòng)半個(gè)屏幕 |
| CTRL+f | 向前移動(dòng)整個(gè)屏幕 |
| CTRL+u | 向后移動(dòng)半個(gè)屏幕 |
| CTRL+b | 向后移動(dòng)整個(gè)屏幕 |
| CTRL+e | 屏幕往上移動(dòng)一行 |
| CTRL+y | 屏幕往下移動(dòng)一行 |
| CTRL+u | 屏幕往上移動(dòng)半個(gè)頁(yè)面 |
| CTRL+f | 屏幕往下移動(dòng)一個(gè)頁(yè)面 |
| CTRL+l | 重繪屏幕 |
編輯文件
只有在插入模式下才可以對(duì)文本進(jìn)行編輯。從指令模式切換為插入模式可以有很多種方法:
| 指令 | 描述 |
|---|---|
| i | 當(dāng)前位置前插入文本 |
| I | 當(dāng)前行首插入文本 |
| a | 當(dāng)前位置后插入文本 |
| A | 當(dāng)前行末尾插入文本 |
| o | 在光標(biāo)位置下方新建一行來(lái)輸入文本 |
| a | 在光標(biāo)位置上方新建一行來(lái)輸入文本 |
刪除字符
下面是關(guān)于用來(lái)在打開(kāi)的文件中刪除字符或行的指令列表:
| 指令 | 描述 |
|---|---|
| x | 刪除光標(biāo)位置下的字符 |
| X | 刪除光標(biāo)位置前的字符 |
| dw | 刪除光標(biāo)位置到下一個(gè)字間的所有字符 |
| d^ | 刪除光標(biāo)位置到行首間的所有字符 |
| d$ | 刪除光標(biāo)位置到行末尾間的所有字符 |
| D | 刪除光標(biāo)位置到當(dāng)前行末尾間的所有字符 |
| dd | 刪除一整行 |
正如前面所述,vi 中的大部分指令都可以在前面加數(shù)字來(lái)表示希望執(zhí)行的次數(shù)。比如,2x 意味著會(huì)刪除當(dāng)前光標(biāo)位置下的兩個(gè)字符,2dd 意味著刪除兩行。
本教程建議在學(xué)習(xí)后面相關(guān)內(nèi)容前可以多多練習(xí)以上內(nèi)容。
更改指令
用戶(hù)可以在不刪除文本的情況下對(duì)字符、字和行進(jìn)行更改。下面是相關(guān)指令:
| 指令 | 描述 |
|---|---|
| cc | 刪除當(dāng)前行,僅留下用戶(hù)鍵入的文本 |
| cw | 刪除光標(biāo)所在的單詞,并進(jìn)入插入模式 |
| r | 替換掉光標(biāo)下的字符,vi 在替換結(jié)束后回到指令模式 |
| R | 覆寫(xiě)當(dāng)前光標(biāo)處的多個(gè)字符,只有使用 Esc 才可以停止覆寫(xiě) |
| s | 將當(dāng)前字符替換為用戶(hù)鍵入的字符,之后,仍處于插入模式 |
| S | 刪除光標(biāo)所在行,替換為用戶(hù)鍵入的文本,之后,系統(tǒng)仍處于插入模式 |
復(fù)制和粘貼指令
用戶(hù)可以從一個(gè)地方復(fù)制一行或一個(gè)字,然后粘貼到其他地方,相關(guān)指令如下:
| 指令 | 描述 |
|---|---|
| yy | 復(fù)制當(dāng)前行 |
| yw | 復(fù)制當(dāng)前字 |
| p | 在光標(biāo)后粘貼 |
| P | 在光標(biāo)前粘貼 |
高級(jí)指令
有一些高級(jí)的指令可以簡(jiǎn)化日常編輯操作:
| 指令 | 描述 |
|---|---|
| J | 當(dāng)前行與下一行想連接,定義一個(gè)數(shù)字可以連接好多行 |
| 當(dāng)前行往左跳轉(zhuǎn),一個(gè) shift 的寬度 | |
| >> | 當(dāng)前行往右跳轉(zhuǎn),一個(gè) shift 的寬度 |
| ~ | 當(dāng)前光標(biāo)下,大小寫(xiě)切換 |
| U | 將當(dāng)前行重新回到光標(biāo)剛到這里的狀態(tài) |
| u | 撤銷(xiāo)該文件的最后一個(gè)更改,再次鍵入u就是重新實(shí)現(xiàn)更新 |
| :f | 在屏幕上顯示當(dāng)前光標(biāo)的半分比、文件名級(jí)文件總數(shù) |
| :f filename | 重命名當(dāng)前文件到 filename |
| :w filename | 寫(xiě)到文件 filename |
| :e filename | 打開(kāi)另一個(gè)文件 filename |
| :cd dirname | 切換當(dāng)前目錄到目錄 dirname |
| :e # | 在兩個(gè)已打開(kāi)的文件間切換 |
| :n | 用戶(hù)在使用 vi 打開(kāi)多個(gè)文件的情況下,使用該指令一次切換到下一個(gè)文件 |
| :p | 用戶(hù)在使用 vi 打開(kāi)多個(gè)文件的情況下,使用該指令一次切換到上一個(gè)文件 |
| :N | 用戶(hù)在使用 vi 打開(kāi)多個(gè)文件的情況下,使用該指令一次切換到下一個(gè)文件 |
| :r file | 讀取文件 file,然后在當(dāng)前行的后面進(jìn)入插入模式 |
| :nr file | 讀取文件 file,然后在當(dāng)前行的后面n行進(jìn)入插入模式 |
字或字符搜索
vi 編輯器有兩種搜索方式:字符串和字符。對(duì)于字符串搜索,需要使用到 / 和 ? 指令。當(dāng)用戶(hù)開(kāi)始鍵入這些指令的時(shí)候,這些指令就會(huì)顯示在屏幕的底部,這樣,用戶(hù)就可以加入指定的字符串來(lái)進(jìn)行搜索了。
這兩個(gè)指令僅僅在搜索方向上有所不同:
/指令是從上往下搜索。?指令時(shí)從下往上搜索。
n 和 N 指令用于以同樣或相反的方向重復(fù)上述搜索指令。在搜索指令中,一些字符串擁有特殊的意義。就需要使用轉(zhuǎn)意符(\)。
| 指令 | 描述 |
|---|---|
| ^ | 在行的首部開(kāi)始搜索 |
| . | 匹配單個(gè)字符 |
| * | 匹配0個(gè)或更多個(gè)前面的字符 |
| $ | 在行末尾開(kāi)始搜索 |
| [ | 啟動(dòng)一個(gè)匹配或者不匹配的表達(dá)式 |
| 在表達(dá)式中,來(lái)找到一個(gè)字的開(kāi)頭或結(jié)尾 | |
| > | 參考上面的 |
集指令
用戶(hù)可以通過(guò)如下指令來(lái)改變 vi 界面的外觀和友好程度:set 指令。下述指定必須在指令模式下鍵入。
| 指令 | 描述 |
|---|---|
| :set ic | 搜索的時(shí)候忽略大小寫(xiě) |
| :set ai | 設(shè)置自動(dòng)縮進(jìn) |
| :set noai | 不設(shè)置自動(dòng)縮進(jìn)/td> |
| :set nu | 在左側(cè)顯示行號(hào) |
| :set sw | 設(shè)置制表符的寬度。比如,:set sw=4 意味著將制表符寬度設(shè)置為4 |
| :set ws | 如何循環(huán)搜索被設(shè)置,則如果在文件底部沒(méi)有搜索到,會(huì)重新從文件開(kāi)頭開(kāi)始搜索。 |
| :set wm | 如果這個(gè)選項(xiàng)有一個(gè)值大于零,編輯器會(huì)“自動(dòng)換行”。 |
| :set ro | 更改文件讀寫(xiě)類(lèi)型為只讀 |
| :set term | 輸出終端類(lèi)型 |
| :set bf | 忽略控制字符 |
運(yùn)行指令
vi 編輯器可以運(yùn)行指令集。為此,用戶(hù)必須在指令模式下輸入 :! 指令。
比如,如果用戶(hù)在保存文件前,希望檢測(cè)文件是否已存在,那么用戶(hù)可以鍵入 :! ls ,然后用戶(hù)就看以在屏幕上看到 ls 指令的的輸出。
按任意鍵后,會(huì)回到 vi 界面。
替換文本
:s/ 指令可以快速替換字或者一組字。下面是語(yǔ)法:
:s/search/replace/gg 代表全局。該指令的意思就是出現(xiàn)在光標(biāo)所在行的所有匹配字符都會(huì)被替換。
注意
下面是使用 vi 編輯器時(shí)的重要提示:
- 用戶(hù)必須在指令模式下來(lái)鍵入指令(連續(xù)按兩次 Esc 鍵,來(lái)保證當(dāng)前處于指令模式)。
- 用戶(hù)要注意指令的大小寫(xiě)。
- 用戶(hù)只能在插入模式下來(lái)鍵入文本。
當(dāng)前文章:創(chuàng)新互聯(lián)UNIX教程:UNIXvi編輯器使用向?qū)?
轉(zhuǎn)載來(lái)于:http://m.5511xx.com/article/cdsgeed.html


咨詢(xún)
建站咨詢(xún)
