在vim 的世界裡,很多看似簡單卻蘊含著不可限量的方式
vim的基礎三模式認清楚,在駕馭上才會比較好上手
這三個模式分別為:
command mode,這個模式大部分都成為”一般模式”,在vim 開啟檔案的時候就是這個模式了
insert mode,此為"編輯模式",由一般模式而來,離開時也是回到一般模式,此編輯模式,就是在編輯時所用到的模式(讓人感到很廢話...)
line mode,命令模式,這是於一般模式下輸入相關命令字元來達到操作功能的模式,其一般使用狀況大多為,搜尋字串,替換字串,分隔視窗等功用
insert mode也就是操作(編輯)模式:
A
a
|
於游標所在的行,此行的最後一位置開始編輯
於游標所在位置的下一個字元開始編輯
|
I
i
|
於游標所在的行,此行的開頭第一個位置開始編輯
於游標所在位置開始編輯
|
O
o
|
於游標所在的行,此行的上一行插入並進入編輯
於游標所在的行,此行的下一行插入並進入編輯
|
S
s
|
於游標所在的行,刪除後並進入編輯
於游標所在的位置,刪除該字元後元並進入編輯模式
|
command mode(一般模式):
在一般模式裡我們可以作到哪些功能呢?
移動,修改(複製),刪除
行、列移動
h 或 向左方向鍵(←)
j 或 向下方向鍵(↓)
k 或 向上方向鍵(↑)
l 或 向右方向鍵(→)
|
游標向下移動一個字元
游標向下移動一個字元
游標向上移動一個字元
游標向右移動一個字元
|
0 或功能鍵[Home]
$ 或功能鍵[End]
|
這是數字「0 」:移動到這一行的最前面字元處 (常用)
移動到這一行的最後面字元處(常用)
|
頁面移動
[Ctrl] + [f]
|
螢幕「向下」移動一頁,相當於 [Page Down]按鍵 (常用)
|
[Ctrl] + [b]
|
螢幕「向上」移動一頁,相當於 [Page Up] 按鍵 (常用)
|
[Ctrl] + [d]
|
螢幕「向下」移動半頁
|
[Ctrl] + [u]
|
螢幕「向上」移動半頁
|
+
|
游標移動到非空白字元的下一列
|
-
|
游標移動到非空白字元的上一列
|
n<space>
|
那個 n 表示『數字』,例如 20 。按下數字後再按空白鍵,游標會向右移動這一行的 n 個字元。例如 20<space> 則游標會向後面移動 20 個字元距離。
|
H
|
游標移動到這個螢幕的最上方那一行的第一個字元
|
M
|
游標移動到這個螢幕的中央那一行的第一個字元
|
L
|
游標移動到這個螢幕的最下方那一行的第一個字元
|
G
|
移動到這個檔案的最後一行(常用)
|
nG
|
n 為數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu)
|
gg
GG
|
移動到這個檔案的第一行,相當於 1G 啊! (常用)
移動到這個檔案的最後一行
|
zt
zz
zb
|
把現在的這行移動到畫面(螢幕)的最上方
把現在的這行移動到畫面(螢幕)的中央
把現在的這行移動到畫面(螢幕)的底部
|
[Ctrl] + [y]
[Ctrl] + [e]
|
往上捲一行
往下卷一行
|
n<Enter>
|
n 為數字。游標向下移動 n 行(常用)
|
vim多視窗模式下頁面移動
[Ctrl]+[w] + [hjkl]
[Ctrl]+[w] + [←↓↑ →]
|
在分隔視窗之間進行移動
|
[Ctrl]+[w] + [p]
|
返回切換,也就是反向切換回去的意思
|
[Ctrl]+[w] + [w]
|
循環切換
|
[Ctrl]+[w] + [t]
|
切換到右上角視窗
|
[Ctrl]+[w] + [b]
|
切換到左下角視窗
|
複製、刪除
dd
|
刪除游標所在的那一整列(常用)
|
ndd
|
n 為數字。刪除游標所在的向下 n 列,例如 20dd 則是刪除 20 列 (常用)
|
d1G
|
刪除游標所在到第一行的所有資料
|
dG
|
刪除游標所在到最後一行的所有資料
|
d$
|
刪除游標所在處,到該行的最後一個字元
|
d0
|
那個是數字的 0 ,刪除游標所在處,到該行的最前面一個字元
|
yy
|
複製游標所在的那一行(常用)
|
nyy
|
n 為數字。複製游標所在的向下 n 列,例如 20yy 則是複製 20 列(常用)
|
y1G
|
複製游標所在列到第一列的所有資料
|
yG
|
複製游標所在列到最後一列的所有資料
|
y0
|
複製游標所在的那個字元到該行行首的所有資料
|
y$
|
複製游標所在的那個字元到該行行尾的所有資料
|
p, P
|
p 為將已複製的資料在游標下一行貼上,P 則為貼在游標上一行! 舉例來說,我目前游標在第 20 行,且已經複製了 10 行資料。則按下 p 後, 那 10 行資料會貼在原本的 20 行之後,亦即由 21 行開始貼。但如果是按下 P 呢? 那麼原本的第 20 行會被推到變成 30 行。 (常用)
|
J
|
將游標所在列與下一列的資料結合成同一列
|
c
|
重複刪除多個資料,例如向下刪除 10 行,[ 10cj ]
|
u
|
復原前一個動作。(常用)
|
[Ctrl]+r
|
重做上一個動作。(常用)
|
line mode (命令模式):
這是在一般模式下所使用的模式,主要由 : / ? 三個字元作為開頭
/word
|
向游標之下尋找一個名稱為 word 的字串。例如要在檔案內搜尋 vbird 這個字串,就輸入 /vbird 即可! (常用)
|
?word
|
向游標之上尋找一個字串名稱為 word 的字串。
|
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,且並在取代前顯示提示字元給使用者確認是否要取代
|
分割視窗
:sp[lit] filename
|
split 水平分割
|
:vs[plit] filename
|
vsplit 垂直分割
|
:new
|
開啟新水平水分割視窗
|
:vnew
|
開啟新垂直分割視窗
|
資料來源:
鳥哥-vim 程式編輯器:
HOWTO - vi, vim: