Linux 的vim編輯器
一、什麽是VIM?
Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。簡單的來說,vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。 vim 則可以說是程序開發者的一項很好用的工具。
二、VIM的分類
基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)
1.命令模式
控制屏幕光標的移動,字符、字或行的刪除,移動復制某區段及進入Insert mode下,或者到 last line mode。
2.輸入模式
只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式
3.底行命令模式
將文件保存或退出vi,也可以設置編輯環境,如尋找字符串、列出行號……等
三、VIM的使用
1.命令模式
用戶剛剛啟動 vi/vim,便進入了命令模式。
此狀態下敲擊鍵盤動作會被Vim識別為命令,而非輸入字符。比如我們此時按下i,並不會輸入一個字符,i被當作了一個命令。
若想要編輯文本:啟動Vim,進入了命令模式,按下i,切換到輸入模式。
命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。
以下是常用的幾個命令:
i 切換到輸入模式,以輸入字符。
x 刪除當前光標所在處的字符。
: 切換到底線命令模式,以在最底一行輸入命令。
ZZ: 保存並退出
ZQ: 不保存直接退出
*h: 向左移動光標
*l: 向右移動光標
*j: 向下移動光標
*k: 向上移動光標
#h|j|k|l 一次性移動指定行 #表示數字
w: 光標移到下一個單詞的詞首
e: 光標移到下一個單詞的詞尾
b: 光標移到當前或上一個單詞的詞首
#w|e|b 一次性移動指定個單詞 #表示數字
H: 光標移到當前頁的頁首
L: 光標移到當前頁的頁尾
M: 光標移到當前頁的頁中
*G: 光標移到整個文件的尾行
#G: 跳到指定行 在退出模式下:#
*gg: 光標移到整個文件的首行
^: 跳轉至行首的第一個非空白字符
0: 跳轉至行首
$: 跳轉至行尾
):下一句(:上一句
}:下一段{:上一段
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
x: 刪除光標處的字符
#x: 刪除光標處起始的#個字符
xp: 交換光標所在處的字符及其後面字符的位置
~:轉換大小寫
J:刪除當前行後的換行符
*r: 替換光標所在處的字符
*R:切換成REPLACE模式
*d$: 剪切到行尾
*d^:剪切到非空行首
d0:剪切到行首
*dw: 剪切當前單詞
*dd: 剪切光標所在的行
#dd:多行剪切
y$: 復制到行尾
y^:復制到非空行首
y0:復制到行首
*yw: 復制當前單詞
*yy: 復制光標所在的行
#yy:多行復制
*p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的後面
*P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
c$: 刪除到行尾,同時進入插入模式
c^:刪除到行首,同時進入插入模式
c0:刪除到行首,包含帶空格的行首,同時進入插入模式
*cw: 刪除到當前單詞的詞尾,同時進入插入模式
*cc: 刪除當前行,同時進入插入模式
#cc:多行刪除,同時進入插入模式
"[a-z]d|y 復制或剪切到指定的寄存器
"[a-z]p|P
2.輸入模式
在命令模式下按下i就進入了輸入模式。
在輸入模式中,可以使用以下按鍵:
字符按鍵以及Shift組合,輸入字符
ENTER,回車鍵,換行
BACK SPACE,退格鍵,刪除光標前一個字符
DEL,刪除鍵,刪除光標後一個字符
方向鍵,在文本中移動光標
HOME/END,移動光標到行首/行尾
Page Up/Page Down,上/下翻頁
Insert,切換光標為輸入/替換模式,光標將變成豎線/下劃線
ESC,退出輸入模式,切換到命令模式
h或退格: 左移一個字符;
l或空格: 右移一個字符;
j: 下移一行;
k: 上移一行;
gj: 移動到一段內的下一行;
gk: 移動到一段內的上一行;
+或Enter: 把光標移至下一行第一個非空白字符。
-: 把光標移至上一行第一個非空白字符。
w: 前移一個單詞,光標停在下一個單詞開頭;
W: 移動下一個單詞開頭,但忽略一些標點;
e: 前移一個單詞,光標停在下一個單詞末尾;
E: 移動到下一個單詞末尾,如果詞尾有標點,則移動到標點;
b: 後移一個單詞,光標停在上一個單詞開頭;
B: 移動到上一個單詞開頭,忽略一些標點;
ge: 後移一個單詞,光標停在上一個單詞末尾;
gE: 同 ge ,不過‘單詞’包含單詞相鄰的標點。
(: 前移1句。
): 後移1句。
{: 前移1段。
}: 後移1段。
fc: 把光標移到同一行的下一個c字符處
Fc: 把光標移到同一行的上一個c字符處
tc: 把光標移到同一行的下一個c字符前
Tc: 把光標移到同一行的上一個c字符後
;: 配合f & t使用,重復一次
,: 配合f & t使用,反向重復一次
0: 移動到行首。
g0: 移到光標所在屏幕行行首。
^: 移動到本行第一個非空白字符。
g^: 同 ^ ,但是移動到當前屏幕行第一個非空字符處。
$: 移動到行尾。
g$: 移動光標所在屏幕行行尾。
n|: 把光標移到遞n列上。
nG: 到文件第n行。
:n<cr> 移動到第n行。
:$<cr> 移動到最後一行。
H: 把光標移到屏幕最頂端一行。
M: 把光標移到屏幕中間一行。
L: 把光標移到屏幕最底端一行。
gg: 到文件頭部。
G: 到文件尾部。
光標移動方式:
上面的操作都可以配合n使用,比如在正常模式(下面會講到)下輸入3h, 則光標向左移動3個字符。
3.底行命令模式
在命令模式下按下:(英文冒號)就進入了底線命令模式。
底線命令模式可以輸入單個或多個字符的命令,可用的命令非常多。
在底線命令模式中,基本的命令有(已經省略了冒號):
q 退出程序
w 保存文件
按ESC鍵可隨時退出底線命令模式。
以下是常用的幾個命令:
*q退出
*q!強制退出不保存
*w保存
*w!強制保存(僅限root及文件的owner)
*wq或x 保存並退出
*wq!或x! 強制保存並退出 (僅限root及文件的owner)
r /path/filename 在光標所在行向下粘貼指定路徑的文件的內容
w /path/newfilename 將當前文件另存為到指定路徑的新文件中。
r! command 在光標所在行向下粘貼命令的輸出結果
.! command 將光標所在行替換並粘貼命令的輸出結果
:# 光標移到第#行
Linux 的vim編輯器