vi 有三種模式:
1、一般模式
以vi 處理文件時,一進入該文件就是一般模式了。在這個模式中,可以使用上下左右按鍵來移動光標,可以使用“刪除字符”或“刪除整行”來處理文件內容,也可以使用“複製”、“粘貼”來處理您的文件數據。
2、編輯模式
在一般模式下可以處理刪除、複製、粘貼等動作,但是卻無法編輯。在按下i ,I,o ,O,a,A,r,R 等字母之後纔會進入編輯模式。注意,通常在Linux中,按下上述字母后,在畫面的左下方會出現INSERT 或REPLACE字樣,這纔可以輸入任何字符寫入您的文件中。如果要回到一般模式,必須按下Esc鍵,纔可退出編輯模式。
3、命令模式
在一般模式中,輸入“: ”或“/ ”就可以將光標移動到最末一行。在這個模式中,您可以搜尋數據,讀取、存盤、大量字符替換、退出vi 、顯示行號等動作也是在此模式中完成。
指令通常有下面幾種(注意,當按下“: ”時,光標會自動移動到屏幕的最下面一行)
一般模式 | 光標移動 |
h 或 向左的方向鍵 | 光標向左移動一個字符 |
j 或 向下的方向鍵 | 光標向下移動一個字符 |
k 或 向上的方向鍵 | 光標向上移動一個字符 |
l 或 向右的方向鍵 | 光標向右移動一個字符 |
Ctrl+f | 屏幕向前翻動一頁(常用) |
Ctrl+b | 屏幕向後翻動一頁(常用) |
Ctrl+d | 屏幕向前翻動半頁 |
Ctrl+u | 屏幕向後翻動半頁 |
+ | 光標移動到非空格符的下一列 |
- | 光標移動到非空格符的上一列 |
n<space> | 按下數字後再按空格鍵,光標會向右移動這一行的n個字符。例如10<space> 則光標向右移動10個字符 |
0 | (這是數字0)光標移動到這一行的第一個字符(常用) |
$ | 光標移動到這一行的最後一個字符(常用) |
H | 光標移動到這個屏幕最上方的那一行 |
M | 光標移動到這個屏幕中央的那一行 |
L | 光標移動到這個屏幕最下方的那一行 |
G | 光標移動到這個文件的最後一行(常用) |
nG | 光標移動到這個文件的第n行 如20G 則會移動到這個文件的第20行 |
n<Enter> | 光標向下移動n行(常用) |
一般模式 | 查找與替換 |
/word | 在光標之後查找一個名爲word的字符串(常用) |
?word |
在光標之前查找一個名爲word的字符串 |
:n1,n2s/word1/word2/g | 在n1與n2行之間查找word1這個字符串,並將該字符串替換爲word2(常用) |
:1,$s/word1/word2/g | 從第1行到最後一行查找word1字符串,並將其替換爲word2(常用) |
:1,$s/word1/word2/gc | 從第一行到最後一行查找word1字符串,並將其替換爲word2,且在替換前顯示提示符讓用戶確認(conform)(常用) |
一般模式 | 刪除、複製與粘貼 |
x,X | x向後刪除一個字符,X爲向前刪除一個字符(常用) |
nx |
向後刪除n個字符 |
dd | 刪除光標所在的那一整列(常用) |
ndd | 刪除光標所在列的向前n列,如20dd則是刪除20列(常用) |
d1G |
刪除光標所在行到第一行的數據 |
dG | 刪除光標所在行到最後一行的所有數據 |
yy | 複製光標所在行(常用) |
nyy |
複製光標所在列的向前n列,如20yy則是複製20列(常用) |
y1G | 複製光標所在列到第一列的所有數據 |
yG | 複製光標所在列到最後一列的所有數據 |
p,P | p複製的數據粘貼在光標下一行,P則爲粘貼在光標上一行(常用) |
J | 將光標所在列與下一列的數據結合成一列 |
u | 恢復前一個動作(常用) |
編輯模式 | |
Esc | 退出編輯模式,回到一般模式(常用) |
命令模式 | |
:w | 將編輯的數據寫入硬盤文件中(常用) |
:w! | 若文件屬性爲只讀,強制寫入該文件 |
:q |
退出vi(常用) |
:q! | 若曾修改過文件,又不想保存,使用!爲強制退出不保存文件 |
:wq | 保存後退出,若爲 :wq! 則爲強制保存後退出(常用) |
:w[filename] | 將編輯數據保存爲另一個文件(類似另存新文檔) |
:r[filename] | 在編輯的數據中,讀入另一個文件的數據。亦即將filename這個文件內容加到光標所在行的後面 |
:set nu | 顯示行號,設定之後,會在每一行的前面顯示改行的行號 |
:set nonu | 與set nu 相反,爲取消行號 |
n1,n2 w [filename] |
將n1到n2的內容保存到filename這個文件 |