
vim 分為三種模式的作用分別是:
一般指令模式 (command mode) | 以 vi 打開一個檔案就直接進入一般指令模式了(這是預設的模式,也簡稱為一般模式)。 |
編輯模式 (insert mode) | 在一般指令模式中可以進行刪除、複製、貼上等等的動作。當你按下『i, I, o, O, a, A, r, R』等任何一個字母之後才會進入編輯模式。要回到一般指令模式, 要按下『Esc』按鍵退回 一般指令模式。 |
指令列命令模式 (command-line mode) | 在一般模式當中,輸入『 : / ? 』三個中的任何一個按鈕,就可以將游標移動到最底下那一列。 |
一般指令模式可用的按鍵
h 或 向左方向鍵(←) | 游標向左移動一個字元 |
j 或 向下方向鍵(↓) | 游標向下移動一個字元 |
k 或 向上方向鍵(↑) | 游標向上移動一個字元 |
l 或 向右方向鍵(→) | 游標向右移動一個字元 |
[Ctrl] + [f] | 螢幕『向下』移動一頁,相當於 [Page Down]按鍵 |
[Ctrl] + [b] | 螢幕『向上』移動一頁,相當於 [Page Up] 按鍵 |
[Ctrl] + [d] | 螢幕『向下』移動半頁 |
[Ctrl] + [u] | 螢幕『向上』移動半頁 |
+ | 游標移動到非空白字元的下一列 |
– | 游標移動到非空白字元的上一列 |
n<space> | 那個 n 表示『數字』,按下數字後再按空白鍵,游標會向右移動這一列的 n 個字元。 |
0 或功能鍵[Home] | 移動到這一列的最前面字元處 |
$ 或功能鍵[End] | 移動到這一列的最後面字元處 |
H | 游標移動到這個螢幕的最上方那一列的第一個字元 |
M | 游標移動到這個螢幕的中央那一列的第一個字元 |
L | 游標移動到這個螢幕的最下方那一列的第一個字元 |
G | 移動到這個檔案的最後一列 |
nG | n 為數字。移動到這個檔案的第 n 列 |
gg | 移動到這個檔案的第一列 |
n<Enter> | n 為數字。游標向下移動 n 列 |
/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) 是否需要取代 |
x, X | x 為向後刪除一個字元 (相當於 [del] 按鍵), X 為向前刪除一個字元(相當於 [backspace] 亦即是倒退鍵) |
nx | n 為數字,連續向後刪除 n 個字元 |
dd | 刪除游標所在的那一整列 |
ndd | n 為數字。刪除游標所在的向下 n 列 |
d1G | 刪除游標所在到第一列的所有資料 |
dG | 刪除游標所在到最後一列的所有資料 |
d$ | 刪除游標所在處,到該列的最後一個字元 |
d0 | 刪除游標所在處,到該列的最前面一個字元 |
yy | 複製游標所在的那一列 |
nyy | n 為數字。複製游標所在的向下 n 列 |
y1G | 複製游標所在列到第一列的所有資料 |
yG | 複製游標所在列到最後一列的所有資料 |
y0 | 複製游標所在的那個字元到該列行首的所有資料 |
y$ | 複製游標所在的那個字元到該列行尾的所有資料 |
p, P | p 為將已複製的資料在游標下一列貼上,P 則為貼在游標上一列! |
J | 將游標所在列與下一列的資料結合成同一列 |
c | 重複刪除多個資料 |
u | 復原前一個動作 |
[Ctrl]+r | 重做上一個動作 |
. | 重複前一個動作 |
編輯模式可用的按鍵
i, I | 進入插入模式(Insert mode): i 為『從目前游標所在處插入』, I 為『在目前所在列的第一個非空白字元處開始插入』 |
a, A | 進入插入模式(Insert mode): a 為『從目前游標所在的下一個字元處開始插入』, A 為『從游標所在列的最後一個字元處開始插入』 |
o, O | 進入插入模式(Insert mode): 這是英文字母 o 的大小寫。o 為『在目前游標所在的下一列處插入新的一列』; O 為在目前游標所在處的上一列插入新的一列 |
r, R | 進入取代模式(Replace mode): r 只會取代游標所在的那一個字元一次;R會一直取代游標所在的文字,直到按下 ESC 為止; |
[Esc] | 回到一般指令模式 |
指令列模式可用的按鍵
:w | 將編輯的資料寫入硬碟檔案中 |
:w! | 若檔案屬性為『唯讀』時,強制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案權限有關啊! |
:q | 離開 vi |
:q! | 若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。 |
:wq | 儲存後離開,若為 :wq! 則為強制儲存後離開 |
:w [filename] | 將編輯的資料儲存成另一個檔案(類似另存新檔) |
參考資料