Vim是一款極其強(qiáng)大的編輯器,因其代碼補(bǔ)全、編譯及錯誤跳轉(zhuǎn)等方便編程的功能而受到廣大程序員的青睞。然而vim極其陡峭的學(xué)習(xí)曲線讓許多第一次接觸它的人望而卻步。開始學(xué)習(xí)vim時往往會覺得痛苦,但是在掌握一些基本操作后,通過不斷的練習(xí),編輯的效率會得到大幅度的提升。下面本文將介紹一些vim的基本操作。
vim的幾種模式
- 命令行模式
這是剛打開vim的時候進(jìn)入的模式,在此模式之下,可以輸入會被解釋與執(zhí)行的命令。 - 插入模式
在此模式之下,大部分鍵盤輸入被作為文本插入。 - 可視化模式
可視化模式可以通過移動命令選中字符、行或一塊文本,被選中的部分會高亮顯示。當(dāng)執(zhí)行一個非移動命令時,命令會被執(zhí)行到整個高亮區(qū)域。 - 幾種模式的轉(zhuǎn)換
- 從命令行模式到插入模式
i 在當(dāng)前位置之前插入
a 在當(dāng)前位置之后插入(追加)
I 調(diào)到當(dāng)前行第一個非空白字符之前插入
A 調(diào)到當(dāng)前行最后一個字符之后插入
- 從命令行模式到可視模式
v 切換到可視模式(字符級別)
V 切換到可視模式(行級別)
ctrl-v 切換到塊可視模式(塊級別的)
按ESC可以退出插入模式或可視模式,回到命令行模式。
vim的基本命令
- 移動
在上一小節(jié)已經(jīng)介紹了如何從命令行模式轉(zhuǎn)為插入模式,并通過i,a,I,A這幾個命令輸入文本。而如何在文本中進(jìn)行移動,有如下命令:
//基礎(chǔ)命令
h 左移
l 右移
k 上移
j 下移 (像一個向下的鉤子)
或者使用方向鍵的上下左右
//進(jìn)階命令
0 移動至當(dāng)前行第一列
^ 當(dāng)前行第一個非空白字符
w 移到下一個單詞(第一個字符之前)
W 移到下一個單詞,忽略標(biāo)點
e 移動到單詞尾部(最后一個字符之前)
E 移動到單詞尾部,忽略標(biāo)點
b 移動到單詞開頭
B 移動到單詞開頭,忽略標(biāo)點
ge 移動到前一個詞尾部
gE 移動到前一個詞尾部,忽略標(biāo)點
g_ 移動到最后一個非空白字符
$ 移動到最后一列(最后一個字符之前)
- 編輯(增、刪、改、查)
//增
o 在光標(biāo)所在行的下方打開新的行
O 在光標(biāo)所在行的上方打開新的行
//刪
d 刪除當(dāng)前光標(biāo)位置到下一個命令所指定的位置之間的所有字符,并將刪除的內(nèi)容存到剪貼板里(例如: dw刪除當(dāng)前行光標(biāo)位置到后一個單詞間的所有字符)
dd 刪除當(dāng)前行
x 刪除光標(biāo)位置字符
X 刪除光標(biāo)之前的字符(相當(dāng)于回退)
//改
y 拷貝
p 在當(dāng)前光標(biāo)之后黏貼拷貝的內(nèi)容
P 在當(dāng)前光標(biāo)之前黏貼拷貝的內(nèi)容
c 修改當(dāng)前光標(biāo)位置到下一個命令所指定的位置之間的所有字符(例如:c$刪除當(dāng)前行光標(biāo)位置到當(dāng)前行末的之間的所有字符,同時進(jìn)入插入模式)
r 替換當(dāng)前字符
R 連續(xù)替換多個字符
:r filename 向當(dāng)前文件中插入另外文件的內(nèi)容
:s/old/new 替換光標(biāo)所在行第一個匹配字符串
:s/old/new/g 替換光標(biāo)所在行所有匹配字符串
:#,#s/old/new/g 替換兩行間所有匹配字符串,#表示兩個行號
:%s/old/new/g 替換整個文件中所有匹配字符串
:%s/old/new/gc 找到整個文件中所有匹配字符串,并詢問是否替換
s 用輸入替換當(dāng)前位置到下一個命令給出位置的字符
//查
/pattern 查找(高亮) pattern 的字符串
% 查找配對的括號)、]、}
* 和 # 匹配光標(biāo)當(dāng)前所在的單詞,移動光標(biāo)到下一個(或上一個)匹配單詞(*是下一個,#是上一個)
:set ic 查找的時候忽略大小寫
:set hls 高亮顯示所有匹配短語
:set is 查找短語時顯示部分匹配
- 其他基本操作
//打開/保存/退出
:e <path/to/file> 打開文件
:w 存盤
:saveas<path/to/file> 文件另存為
:x,ZZ 或 :wq 保存并退出 (:x 表示僅在需要時保存,ZZ不需要輸入冒號并回車)
:q! 退出不保存
:qa! 強(qiáng)行退出所有的正在編輯的文件,就算別的文件有更改。
:bn 和 :bp 在多個打開的文件中做上下切換。
//可視模式下(ctrl+v)
J 把所有的行連接起來(變成一行)
< 或 > 左右縮進(jìn)
= 自動縮進(jìn)
//分屏
:split 創(chuàng)建分屏
:vsplit 創(chuàng)建垂直分屏
<ctrl-w><dir> dir表示方向,可以是 hjkl 或是 ←↓↑→ ,用來切換分屏。
<ctrl-w>_(或 <ctrl-w>|) 最大化尺寸
<ctrl-w>+ (或<ctrl-w>-) 增加尺寸
//其它
N command 重復(fù)一個命令N次
. 重復(fù)上一個命令
:help 使用在線幫助系統(tǒng)
<ctrl-D>和<TAB> 可以進(jìn)行命令行補(bǔ)全
小結(jié)
以上介紹的是vim的一些基本操作,基本覆蓋了大多數(shù)常用命令。而為了讓vim強(qiáng)大的特性和功能得到充分的發(fā)揮,通??梢酝ㄟ^配置vimrc文件來實現(xiàn),本文僅介紹一些基礎(chǔ)操作,不做展開。
總而言之,vim是一款強(qiáng)大的編輯器,但它的優(yōu)點要等到熟練掌握它之后才會顯現(xiàn)。學(xué)習(xí)vim需要記住大量的命令,可以通過vimtutor來進(jìn)行練習(xí),常用便能長記。