Linux(五):Linux的文檔編輯器Vi
什么是Vi
我們使用Windows的時候,記錄或者存儲信息,一般都是txt文本編輯,記事本,word文檔等等,進行編程的時候,使用idea,eclipse等等,但是在Linux中,就比較直接了,不論你是記錄信息,還是編程,它只要一個編輯器就夠了!這個編輯器就是Vim,
Vim 是一個基于文本界面的編輯工具,使用簡單且功能強大。更重要的是,Vim 是所有 Linux 發行版本默認的文本編輯器。很多人習慣將 Vim 稱為 Vi,其實 Vim 是 Vi 的增強版(在 Vi 的基礎上增加了正則表達式的查找、多窗口的編輯等功能),使用 Vim 進行程序開發會更加方便。
Vi的安裝
眾多 Linux 發行版系統,通常都已經默認安裝好了 vi 或 Vim 文本編輯器,建議使用 Vim。如果在命令行模式下輸入“vim”,輸出結果為“Command not found”,則表示此系統中未安裝 Vim。
CentOS 系統中,使用如下命令即可安裝 Vim:
yum install vim
Vi的三種工作模式
Linux 系統中所有的內容都以文件的形式進行存儲,當在命令行下更改文件內容時,我們便使用文本編輯器 Vim,使用 Vim 編輯文件時,存在 3 種工作模式,分別是命令模式、輸入模式和編輯模式,這 3 種工作模式可隨意切換

Vim的命令模式
使用 Vim 編輯文件時,默認處于命令模式。此模式下,可使用方向鍵(上、下、左、右鍵)或 k、j、h、i 移動光標的位置,還可以對文件內容進行復制、粘貼、替
換、刪除等操作。
Vim的輸入模式
在輸入模式下,Vim 可以對文件執行寫操作,類似于在 Windows 系統的文檔中輸入內容。
使 Vim 進行輸入模式的方式是在命令模式狀態下輸入 i、I、a、A、o、O 等插入命令(各指令的具體功能如表 3 所示),當編輯文件完成后按 Esc 鍵即可返回命令模式。
| 快捷鍵 | 功能描述 |
|---|---|
| i | 在當前光標所在位置插入隨后輸入的文本,光標后的文本相應向右移動 |
| I | 在光標所在行的行首插入隨后輸入的文本,行首是該行的第一個非空白字符,相當于光標移動到行首執行 i 命令 |
| o | 在光標所在行的下面插入新的一行。光標停在空行首,等待輸入文本 |
| O | 在光標所在行的上面插入新的一行。光標停在空行的行首,等待輸入文本 |
| a | 在當前光標所在位置之后插入隨后輸入的文本 |
| A |
在光標所在行的行尾插入隨后輸入的文本,相當于光標移動到行尾再執行a命令 |
Vim 的編輯模式
編輯模式用于對文件中的指定內容執行保存、查找或替換等操作。
使 Vim 切換到編輯模式的方法是在命令模式狀態下按“:”鍵,此時 Vim 窗口的左下方出現一個“:”符號,這是就可以輸入相關指令進行操作了。
指令執行后 Vim 會自動返回命令模式。如想直接返回命令模式,按 Esc 即可。
Vi的基本操作
Vim 打開文件
使用 Vim 打開文件很簡單,例如在命令行模式下打開一個自己編寫的文件 /test/vi.test,打開方法如下:
[root@testuser ~]# vim /test/vi.test
剛打開文件時 Vim 處于命令模式,此時文件的下方會顯示文件的一些信息,包括文件的總行數和字符數,以及當前光標所在的位置等,此時可以使用插入命令(按 i 鍵)進入輸入模式對文件進行編輯,如圖 所示。

除此之外,我們還可以利用下表中打開文件的命令格式,針對特定情形使用適當的打開方式:
| Vi 使用的選項 | 說 明 |
|---|---|
| vim filename | 打開或新建一個文件,并將光標置于第一行的首部 |
| vim -r filename | 恢復上次 vim 打開時崩潰的文件 |
| vim -R filename | 把指定的文件以只讀方式放入 Vim 編輯器中 |
| vim + filename | 打開文件,并將光標置于最后一行的首部 |
| vi +n filename | 打開文件,并將光標置于第 n 行的首部 |
| vi +/pattern filename | 打幵文件,并將光標置于第一個與 pattern 匹配的位置 |
| vi -c command filename | 在對文件進行編輯前,先執行指定的命令 |
使用 Vim 進行編輯
Vim 插入文本
從命令模式進入輸入模式進行編輯,可以按下 I、i、O、o、A、a 等鍵來完成,使用不同的鍵,光標所處的位置不同,具體如下圖:
| 快捷鍵 | 功能描述 |
|---|---|
| i | 在當前光標所在位置插入隨后輸入的文本,光標后的文本相應向右移動 |
| I | 在光標所在行的行首插入隨后輸入的文本,行首是該行的第一個非空白字符,相當于光標移動到行首執行 i 命令 |
| o | 在光標所在行的下面插入新的一行。光標停在空行首,等待輸入文本 |
| O(大寫) | 在光標所在行的上面插入新的一行。光標停在空行的行首,等待輸入文本 |
| a | 在當前光標所在位置之后插入隨后輸入的文本 |
| A | 在光標所在行的行尾插入隨后輸入的文本,相當于光標移動到行尾再執行 a 命令 |
Vim 查找文本
| 快捷鍵 | 功能描述 |
|---|---|
| /abc | 從光標所在位置向前查找字符串 abc |
| /^abc | 查找以 abc 為行首的行 |
| /abc$ | 查找以 abc 為行尾的行 |
| ?abc | 從光標所在為主向后查找字符串 abc |
| n | 向同一方向重復上次的查找指令 |
| N | 向相反方向重復上次的查找指定 |
如果在文件中并沒有找到所要查找的字符串,則在文件底部會出現 "Pattern not found" 提示。
在查找過程中需要注意的是,要查找的字符串是嚴格區分大小寫的,如查找 "shenchao" 和 "ShenChao" 會得到不同的結果。如果想忽略大小寫,則輸入命令 ":set ic";調整回來輸入":set noic"。
Vim 替換文本
| 快捷鍵 | 功能描述 |
|---|---|
| r | 替換光標所在位置的字符 |
| R | 從光標所在位置開始替換字符,其輸入內容會覆蓋掉后面等長的文本內容,按“Esc”可以結束 |
| :s/a1/a2/g | 將當前光標所在行中的所有 a1 用 a2 替換 |
| :n1,n2s/a1/a2/g | 將文件中 n1 到 n2 行中所有 a1 都用 a2 替換 |
| :g/a1/a2/g | 將文件中所有的 a1 都用 a2 替換 |
例如,要將某文件中所有的 "root" 替換為 "liudehua",則有兩種輸入命令,分別為:
:1, $s/root/liudehua/g
或
:%s/root/liudehua/g
Vim刪除文本
| 快捷鍵 | 功能描述 |
|---|---|
| x | 刪除光標所在位置的字符 |
| dd | 刪除光標所在行 |
| ndd | 刪除當前行(包括此行)后 n 行文本 |
| dG | 刪除光標所在行一直到文件末尾的所有內容 |
| D | 刪除光標位置到行尾的內容 |
| :a1,a2d | 函數從 a1 行到 a2 行的文本內容 |
注意,被刪除的內容并沒有真正刪除,都放在了剪貼板中。將光標移動到指定位置處,按下 "p" 鍵,就可以將剛才刪除的內容又粘貼到此處。
Vim復制和粘貼文本
| 快捷鍵 | 功能描述 |
|---|---|
| p | 將剪貼板中的內容粘貼到光標后 |
| P(大寫) | 將剪貼板中的內容粘貼到光標前 |
| y | 復制已選中的文本到剪貼板 |
| yy | 將光標所在行復制到剪貼板,此命令前可以加數字 n,可復制多行 |
| yw | 將光標位置的單詞復制到剪貼板 |
Vim 保存退出文本
Vim 的保存和退出是在編輯模式中進行的(按Esc之后輸入下列命令),其常用命令如下表所示:
| 命令 | 功能描述 |
|---|---|
| :wq | 保存并退出 Vim 編輯器 |
| :wq! | 保存并強制退出 Vim 編輯器 |
| :q | 不保存就退出 Vim 編輯器 |
| :q! | 不保存,且強制退出 Vim 編輯器 |
| :w | 保存但是不退出 Vim 編輯器 |
| :w! | 強制保存文本 |
| :w filename | 另存到 filename 文件 |
| x! | 保存文本,并退出 Vim 編輯器,更通用的一個 vim 命令 |
| ZZ | 直接退出 Vim 編輯器 |
需要注意的是,"w!" 和 "wq!" 等類似的指令,通常用于對文件沒有寫權限的時候(顯示 readonly),但如果你是文件的所有者或者 root 用戶,就可以強制執行

浙公網安備 33010602011771號