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

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


咨詢
建站咨詢
