vi編輯器,通常稱之爲vi,是一種廣泛存在於各種UNIX和Linux系統中的文本編輯程序。它的功能十分強大,但是命令繁多,不容易掌握,它可以執行輸出、刪除、查找、替換、塊操作等衆多文本操作,而且用戶可以根據自己的需要對其進行定製,這是其他編輯程序所沒有的。vi不是基於窗口的,所以,這個多用途編輯程序可以用於在任何類型的終端上編輯各式各樣的文件。
爲什麼學習vi編輯器?
就使用的方便性而言,有比vi更好的編輯器,還有圖形化的編輯器,爲什麼還要用vi?
- 歷史久遠,功能強大,在有些情況下系統中能夠找到的編輯器只有vi;
- 用戶一旦熟悉後,使用非常方便;系統管理員使用正則表達式可以極大地提高工作效率,而學習vi也是掌握正則表達式的有效途徑。
由於vi的版本不同,其命令格式、功能和用法會有一些差別。Shell中執行vi命令,RedHat系統實際上是執行vim,它是傳統vi的增強版本
1 VI的三種工作模式
命令模式(command mode)—執行命令
啓動VI默認進入命令模式。此時界面不能編輯,只能接受命令(鍵入的命令看不到)
輸入模式(Insert mode)—輸入文本
命令模式下用i(sert)
,a(ppend)
,o
,s
等均可進入該模式。按esc
返回命令模式。
此模式下左下角有– INSERT – 標誌,如圖所示。
末行模式(last line mode)—執行待定命令
實際上也是命令模式的一種,在命令模式下輸入冒號:
進入一個命令行,可顯示地輸入命令(所以也有些書認爲是兩種工作模式)。
三種模式可自由切換,一般切換命令就是操作的英文單詞的首字母。
2 Vi的啓動
啓動命令:打開2.cpp文件。
vi 2.cpp
vim 2.cpp
- 如果文件存在,則vi顯示文件內容並等待用戶的命令。
- 如果指定的文件不存在,則vi將告知用戶這是未命名的文件,並進入一個空白的界面。
如果沒有語法高亮,如圖左,有可能是vi編輯器版本低,可以下載vi增強版解決問題,也可能是沒設置好。
以CentOS爲例:yum -y install vim
啓動vi時都是默認處於命令模式。用戶必須使用命令(如i
)切換到文本輸入模式才能進行輸入編輯,或者可執行刪除、複製等編輯命令。
3 Vi的退出
退出vi前,先按ESC
鍵,以確保當前vi的狀態爲命令模式,然後再鍵入:
(冒號),輸入下列命令,退出vi。
處於命令模式,先輸入冒號
:q
(quit)文件未修改,退出。
:q!
(quit)文件有修改,但不想保存,強制退出。
:w
(write)保存文件的修改,但不退出。
:wq
(write and quit)保存並退出
:wq!
(write and quit)對於只讀文件,強制保存並退出。
處於命令模式,不用輸入冒號
ZZ
大寫ZZ,保存修改並退出。
ZQ
大寫ZQ,不保存退出。
4 怎麼編輯
光標移動
按ESC
鍵,以確保當前vi的狀態爲命令模式。
h
:向左移動一個字符
l
:向右移動一個字符
j
:向下移動一行
k
:向上移動一行
nG
:移動到第n行首,n爲數字,命令模式下輸入set nu(mber)
可設置vi顯示行號,set nonu(mber)
不顯示行號。
輸入內容
必須從命令模式轉入插入模式才能進行輸入編輯,命令有:
新增 (append)
a
:從光標所在位置後面開始新增
A
:從光標所在行最後面的地方開始新增
插入 (insert)
i
:從光標所在位置前面開始插入
I
:從光標所在行的第一個非空白字元前面開始插入
開始 (open)
o
:在光標所在行下新增一列並進入輸入模式。
O
:在光標所在行上方新增一列並進入輸入模式。
刪除內容
按ESC
鍵,以確保當前vi的狀態爲命令模式。
x
: 刪除光標所在字符
dw
:刪除一個單詞
dd
:刪除光標所在的行
s
:刪除光標所在字節,並進入輸入模式
撤消更改
按ESC
鍵,以確保當前vi的狀態爲命令模式。
u
:撤銷修改,恢復剛纔被修改的文本
U
:撤銷修改,恢復光標所在行的所有修改
:q
(quit)文件修改不保存,退出。
複製內容
複製命令:y
yy
: 複製整行
yw
:複製光標所在的單詞
nyw
:複製包括光標所在的n個單詞
nyy
:複製包括當前行在內的n行
粘貼內容
p
,P
粘貼複製的內容
學習完這些基本能使用vi編輯文本了,更高級的玩法看後面vi編輯器進階教程。