vim處理模式
vim 有三種處理模式:正常模式/一般模式,命令行模式,插入模式/編輯模式。
正常模式/一般模式:在正常模式下,可以使用快捷鍵
插入模式/編輯模式:可以輸入i,I,o,O,a,A,r,R進入插入模式
命令行模式:完成讀取,存儲,替換,離開,顯示行號等操作。
vim鍵盤圖:
正常模式/一般模式快捷按鍵:
1.移動光標
h 或 向左箭頭鍵(←)? ????光標向左移動一個字符
j 或 向下箭頭鍵(↓)? ? ? ? 光標向下移動一個字符
k 或 向上箭頭鍵(↑)? ?????光標向上移動一個字符
l 或 向右箭頭鍵(→)? ?????光標向右移動一個字符
如果想要進行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵,按下動作即可。
[Ctrl] + [f]????????屏幕『向下』移動一頁,相當于 [Page Down]按鍵 (常用)
[Ctrl] + [b]????????屏幕『向上』移動一頁,相當于 [Page Up] 按鍵 (常用)
[Ctrl] + [d]????????屏幕『向下』移動半頁
[Ctrl] + [u]????????屏幕『向上』移動半頁
+????????????????????????光標移動到非空格符的下一行
-????????????????????????光標移動到非空格符的上一行
n<space>? ? ? ? ? ?n 表示『數字』,例如 20 。按下數字后再按空格鍵,光標會向右移動這一行的 n 個字符。
數字『 0 』 或功能鍵[Home]? ? ? ? ? ? 移動到這一行的最前面字符處 (常用)
$ 或功能鍵[End]????????????????????????????移動到這一行的最后面字符處(常用)
H????????????????????????????????????????????光標移動到這個屏幕的最上方那一行的第一個字符
M????????????????????????????????????????????光標移動到這個屏幕的中央那一行的第一個字符
L????????????????????????????????????????????光標移動到這個屏幕的最下方那一行的第一個字符
G? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????移動到這個檔案的最后一行(常用)
nGn ????????????????????????????????????????為數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu)
gg? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?移動到這個檔案的第一行
n<Enter>????????????????????????????n 為數字。光標向下移動 n 行(常用)
2.搜索替換
/word????????????????????????????向光標之下尋找一個名稱為 word 的字符串。
?word????????????????????????????向光標之上尋找一個字符串名稱為 word 的字符串。
n? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?n 是英文按鍵。代表重復前一個搜尋的動作。
N ????????????????????????????????????N 是英文按鍵。與 n 剛好相反,為『反向』進行前一個搜尋動作。
:n1,n2s/word1/word2/g????????n1 與 n2 為數字。在第 n1 與 n2 行之間尋找 word1 這個字符串,并將該字符串取代為 word2?
:1,$s/word1/word2/g????????????從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2?
:1,$s/word1/word2/gc????????從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 .且在取代前顯示提示字符給用戶確認 (confirm) 是否需要取代.
3.粘貼與復制
x, X????????????????在一行字當中,x 為向后刪除一個字符 (相當于 [del] 按鍵), X 為向前刪除一個字符(相當于 [backspace] 亦即是退格鍵)
nx????????????????????n 為數字,連續向后刪除 n 個字符。
dd????????????????????刪除游標所在的那一整行
ndd????????????????????n 為數字。刪除光標所在的向下 n 行。
d1G????????????????刪除光標所在到第一行的所有數據
dG????????????????????刪除光標所在到最后一行的所有數據
d$????????????????????刪除游標所在處,到該行的最后一個字符
d0?[數字0]? ? ? ?刪除游標所在處,到該行的最前面一個字符
yy????????????????????????復制游標所在的那一行
nyy????????????????????n 為數字。復制光標所在的向下 n 行
y1G? ? ? ? ? ? ? ? ? ? ?復制游標所在行到第一行的所有數據
yG????????????????????????復制游標所在行到最后一行的所有數據
y0????????????????????????復制光標所在的那個字符到該行行首的所有數據
y$????????????????????????復制光標所在的那個字符到該行行尾的所有數據
p, P????????????????????p 為將已復制的數據在光標下一行貼上,P 則為貼在游標上一行
J????????????????????????將光標所在行與下一行的數據結合成同一行
c????????????????????????重復刪除多個數據,例如向下刪除 10 行
u????????????????????????復原前一個動作
[Ctrl]+r? ? ? ? ? ? ? 重做上一個動作。
編輯模式快捷鍵:
i, I????????????????進入輸入模式(Insert mode):i 為『從目前光標所在處輸入』, I 為『在目前所在行的第一個非空格符處開始輸入』
a, A? ? ? ? ? ? ? 進入輸入模式(Insert mode):a 為『從目前光標所在的下一個字符處開始輸入』, A 為『從光標所在行的最后一個字符處開始入』。
o, O? ? ? ? ? ? 進入輸入模式(Insert mode):o 為『在目前光標所在的下一行處輸入新的一行』; O 為在目前光標所在處的上一行輸入新的一行.
r, R????????????進入取代模式(Replace mode):r 只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下 ESC 為止;
[Esc]????????????退出編輯模式,回到一般模式中
命令行模式:
1.指令行的存儲:
:w? ? ? ? ? ? ? ?將編輯的數據寫入硬盤檔案中
:w!? ? ? ? ? ? ?若文件屬性為『只讀』時,強制寫入該檔案。
:q????????????????離開 vi
:q!? ? ? ? ? ? 強制離開不儲存檔案。
:wq????????????儲存后離開,若為 :wq! 則為強制儲存后離開?
ZZ????????????若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存后離開.
:w [filename]????????????????將編輯的數據儲存成另一個檔案(類似另存新檔)
:r [filename]? ? ? ? ? ? ? ? ? ?在編輯的數據中,讀入另一個檔案的數據。亦即將 『filename』 這個檔案內容加到游標所在行后面
:n1,n2 w [filename]????????????將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command????????????????????????暫時離開 vi 到指令行模式下執行 command 的顯示結果!例如
『:! ls /home』????????????????????即可在 vi 當中察看 /home 底下以 ls 輸出的檔案信息!
2.vim環境的變更:
:set nu????????顯示行號,設定之后,會在每一行的前綴顯示該行的行號
:set nonu????????與 set nu 相反,為取消行號!