vi是linux下標准的文本編輯程序,也是linux系統命令行下最經常使用的文本文件可視化編輯器,類似於Dos命令edit,那麼,什麼是可視化呢,其實就是讓你在編輯文本文件的時候能夠看到它們,這聽起來似乎很普通,但是在命令行的字符界面下,可視化編輯確實起了很大的作用。
vi是linux下缺省的編輯器,幾乎所有的linux/unix系統都捆綁了vi,這表示只要你學會了vi這個編輯工具,就可以在任何linux/unix系統上使用它,而且vi程序非常小,只有幾百K大小,因此,只要熟練了vi操作,你可以做任何想做的事情。
vi編輯程序有兩種工作模式:命令模式和文本輸入模式,在命令模式下,輸入的字符被解釋為vi命令,就是這些命令組合形成了vi的強大功能,通過vi命令可以轉換到文本輸入模式,在文本輸入模式下,輸入的字符被作為正在編輯的文件的正文內容來接受,如果按“Esc”鍵則切換到vi命令模式。
下面我麼通過分類的方式,逐個介紹vi的一系列命令的含義和用法。
1. linux命令行下用vi打開文件的命令選項,詳細含義參看下表:
vi使用選項 含義
vi filename 打開或者新建一個文件,並將光標置於第一行首。
vi –r filename 恢復上次vi打開時崩潰的文件。
vi –R filename 把指定的文件以只讀的方式放入編輯器中。
vi + filename 打開文件並將光標置於最後一行首。
vi +n filename 打開文件,並將光標置於第n行首。
vi +/pattern filename 打開文件,並將光標置於第一個與pattern匹配的位置。
vi –c command filename 在對文件進行編輯前,先執行指定的命令。
2. vi命令模式下的命令選項,主要分為移動光標類命令、屏幕翻滾類命令、插入刪除文本類命令、搜索及替換類命令、保存退出類命令。分別在下面列表依次說明。
(1) 移動光標類命令列表:
鍵入的字符 含義
h 光標左移一個字符
l 光標右移一個字符。
backspace鍵 光標左移一個字符。
k或Ctrl+p 光標上移一個字符。
j或Ctrl+n 光標下移一個字符。
Enter鍵 光標下移一行。
w或W 光標右移一個字到字首。
b或B 光標左移一個字到字首。
e或E 光標右移一個字到字尾。
nG 光標移動到第n行首。
n+ 光標下移n行。
n- 光標上移n行。
n$ 相對於當前光標所在行,光標再向後移動n行到行尾。
H 光標移至當前屏幕的頂行。
M 光標移至當前屏幕的中間行。
L 光標移至當前屏幕的最底行。
0 將光標移至當前行首。
$ 將光標移至當前行尾。
:$ 將光標移動到文件最後一行的行首。
(2) 屏幕翻滾類命令列表:
鍵入的字符 含義
Ctrl+u 相對與當前屏幕,向文件首翻半屏。
Ctrl+d 相對與當前屏幕,向文件尾翻半屏。
Ctrl+b 相對與當前屏幕,向文件首翻一屏
Ctrl+f 相對與當前屏幕,向文件尾翻一屏
nz+Enter 將文件的第n行滾至屏幕頂部,如果不指定n值,將當前行滾至屏幕頂部。
(3) 插入刪除文本類命令列表:
鍵入的字符 含義
Esc 返回命令行模式。
i 在光標前輸入文字。
a 在光標後輸入文字。
o 在當前行之下新開一行。
O 在當前行之上新開一行。
r 替換光標所在字符,輸入r命令後,在鍵盤輸入需要替換的新字符即可完成替換。
x 刪除光標所在的字符。
dd 刪除光標所在的行。刪除後的內容自動保存在剪貼板。
yy 將光標所在的行拷貝到剪貼板,如果在“yy”前加上數字,可復制多行。
p 將剪貼板的內容拷貝到光標後。
P 將剪貼板的內容拷貝到光標前。
yw 將光標所在的單詞拷貝到剪貼板。
(4) 搜索及替換類命令列表
鍵入的字符 含義
/abc 在文件中向前查找字符串abc。
?abc 在文件中向後查找字符串abc。
n 在同一方向重復上次的搜索命令。
N 在反方向重復上次的搜索命令。
:s/a1/a2/g 將當前光標所在的行中的所有a1均用a2替換。
:n1,n2s/a1/a2/g 將文件第n1至n2行中所有a1均用a2替換。
:g/a1/a2/g 將文件中所有的a1均用a2替換。
:set nu 給文件的每行加上行號。
(5) 保存退出類命令列表
鍵入的字符 含義
:wq 保存退出vi編輯器,“:wq!”表示強制保存退出。
:q 不保存退出vi編輯器,“:q!”表示不保存,強制退出。
:w 保存但是不退出vi編輯器,“:w!”表示強制保存,“:w filename”表示將修改保存到“filename”中。相當於另存文件。
x! 保存文件,退出vi編輯器,更通用的一個vi命令。