//+++++++++++++++++++++一般模式(默認模式)++++++++++++++++++++++++++++++
一般模式: 移動光標?
h 或 向左方向鍵 光標向左移動一個字符
?
j 或 向下方向鍵 光標向下移動一個字符?
k 或 向上方向鍵 光標向上移動一個字符
l 或 向右方向鍵 光標向右移動一個字符?
[Ctrl] + [f] 屏幕『向前』移動一頁(常用)?
[Ctrl] + [b] 屏幕『向后』移動一頁(常用)?
[Ctrl] + [d] 屏幕『向前』移動半頁?
[Ctrl] + [u] 屏幕『向后』移動半頁?
+ 光標移動到非空格符的下一列?
- 光標移動到非空格符的上一列
n<space> 按下數字后再按空格鍵,光標會向右移動這一行的 n 個字符。例如 20<space> 則光標會向后面移動 20 個字符距離。?
0 這是數字『 0 』:移動到這一行的最前面字符處(常用)?
$ 移動到這一行的最后面字符處(常用)?
H 光標移動到這個屏幕的最上方那一行?
M 光標移動到這個屏幕的中央那一行?
L 光標移動到這個屏幕的最下方那一行?
G 移動到這個檔案的最后一行(常用)?
nG 移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的 20 行(可配合 :set nu)?
n<Enter> 光標向下移動 n 行(常用)
?
一般模式: 搜尋與取代?
/word 向光標之后尋找一個字符串名稱為 word 的字符串。(常用)?
?word 向光標之前尋找一個字符串名稱為 word 的字符串。?
:n1,n2s/word1/word2/g 在第 n1 與 n2 行之間尋找 word1 這個字符串,并將該字符串取代為 word2 !(常用)?
:1,$s/word1/word2/g 從第一行到最后一行尋找 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 將光標所在列與下一列的數據結合成同一列?
c 重復刪除多個數據,例如向下刪除 10 行,[ 10cj ]?
u 復原前一個動作。(常用)?
//+++++++++++++++++++++++進入編輯模式 ?++++++++++++++++++++++++++++++++++++++?
i, I 插入:在目前的光標所在處插入輸入之文字,已存在的文字會向后退;(常用)?
a, A 增加:由目前光標所在的下一個字開始輸入,已存在的文字會向后退:(常用)?
o, O 插入新的一行:從光標所在的下一行枝行首開始輸入文字;(常用)?
r, R 取代:r 會取代光標所在的那一個字符;R會一直取代光標所在的文字,直到按下 ESC 為止;(常用)?
Esc 退出編輯模式,回到一般模式中(常用)?
//+++++++++++++++++++++ ?尾行模式 (命令模式)+++++++++++++++++++++++++++++++ ?
:w 將編輯的數據寫入硬盤檔案中(常用)?
:w! 若檔案屬性為『只讀』時,強制寫入該檔案?
:q 離開 vi (常用)
:q! 若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案?
:wq 儲存后離開,若為 :wq! 則為強制儲存后離開(常用)?
:e! 將檔案還原到最原始的狀態!?
ZZ 若檔案沒有更動,則不儲存離開,若檔案已經經過更動,則儲存后離開!?
:w [filename] 將編輯的數據儲存成另一個檔案(類似另存新檔)?
:r [filename] 在編輯的數據中,讀入另一個檔案的數據。亦即將 『filename』這個檔案內容加到游標所在行后面?
:set nu 顯示行號,設定之后,會在每一行的前綴顯示該行的行號?
:set nonu 與 set nu 相反,為取消行號!?
n1,n2 w [filename] 將 n1 到 n2 的內容儲存成 filename 這個檔案。?
:! command 暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如[ :! ls /home ]?