Vim6種基本的模式:
普通模式
Vim強(qiáng)大的編輯能來(lái)自于其普通模式命令远荠。在普通模式中砸抛,用的編輯器命令亚铁,比如移動(dòng)光標(biāo)蝇刀,刪除文本等等。這也是Vim啟動(dòng)后的默認(rèn)模式徘溢。插入模式
在這個(gè)模式中吞琐,大多數(shù)按鍵都會(huì)向文本緩沖中插入文本。命令模式
在命令行模式中可以輸入會(huì)被解釋成并執(zhí)行的文本然爆。例如執(zhí)行命令(:鍵)站粟,搜索(/和?鍵)或者過(guò)濾命令(!鍵)。在命令執(zhí)行之后曾雕,Vim返回到命令行模式之前的模式奴烙,通常是普通模式。可視模式(Visual mode)
這個(gè)模式與普通模式比較相似剖张。但是移動(dòng)命令會(huì)擴(kuò)大高亮的文本區(qū)域切诀。高亮區(qū)域可以是字符、行或者是一塊文本搔弄。當(dāng)執(zhí)行一個(gè)非移動(dòng)命令時(shí)幅虑,命令會(huì)被執(zhí)行到這塊高亮的區(qū)域上。Vim的"文本對(duì)象"也能和移動(dòng)命令一樣用在這個(gè)模式中顾犹。選擇模式(Select mode)
這個(gè)模式和無(wú)模式編輯器的行為比較相似(Windows標(biāo)準(zhǔn)文本控件的方式)倒庵。這個(gè)模式中褒墨,可以用鼠標(biāo)或者光標(biāo)鍵高亮選擇文本,不過(guò)輸入任何字符的話哄芜,Vim會(huì)用這個(gè)字符替換選擇的高亮文本塊貌亭,并且自動(dòng)進(jìn)入插入模式柬唯。Ex模式(Ex mode)
這和命令行模式比較相似认臊,在使用:visual命令離開(kāi)Ex模式前,可以一次執(zhí)行多條命令锄奢。
我們最常用到就是普通模式失晴、插入模式和命令行模式。
普通模式
一. 普通模式下刪除Vim文本信息
進(jìn)入普通模式拘央,使用下列命令可以進(jìn)行文本快速刪除:
命令 | 說(shuō)明 |
---|---|
x | 刪除游標(biāo)所在的字符 |
3x | 刪除當(dāng)前光標(biāo)開(kāi)始向后三個(gè)字符 |
X | 刪除游標(biāo)所在前一個(gè)字符,涂屁。X=dh |
Delete | 同x |
dd | 刪除整行 |
10dd | 刪除當(dāng)前行開(kāi)始的10行 |
dl | 刪除當(dāng)前字符, dl=x |
dh | 刪除前一個(gè)字符 |
dj | 刪除上一行 |
dk | 刪除下一行 |
dw | 刪除一個(gè)單詞(不適用中文) |
d$或D | 刪除至行尾 |
d^ | 刪除至行首 |
dG | 刪除到文檔結(jié)尾處 |
d1G | 刪至文檔首部 |
kdgg | 刪除當(dāng)前行之前所有行(不包括當(dāng)前行) |
jdG(jd shift + g) | 刪除當(dāng)前行之后所有行(不包括當(dāng)前行) |
二. 游標(biāo)的快速跳轉(zhuǎn)
普通模式下灰伟,下列命令可以讓光標(biāo)快速調(diào)轉(zhuǎn)到指定位置拆又,我們分別討論快速實(shí)現(xiàn)行間跳轉(zhuǎn)和行內(nèi)跳轉(zhuǎn)。
行間跳轉(zhuǎn)
普通模式下使用下列命令在行間按照單詞為單位進(jìn)行跳轉(zhuǎn)
命令 | 說(shuō)明 |
---|---|
nG(n Shift+g) | 游標(biāo)移動(dòng)到第 n 行 |
gg | 游標(biāo)移動(dòng)到到第一行 |
G(Shift+g) | 游標(biāo)移動(dòng)到到最后一行 |
行內(nèi)跳轉(zhuǎn)
普通模式下使用下列命令在行內(nèi)按照單詞為單位進(jìn)行跳轉(zhuǎn)
命令 | 說(shuō)明 |
---|---|
w | 到下一個(gè)單詞的開(kāi)頭 |
e | 到下一個(gè)單詞的結(jié)尾 |
b | 到前一個(gè)單詞的開(kāi)頭 |
ge | 到前一個(gè)單詞的結(jié)尾 |
0或^ | 到行頭 |
$ | 到行尾 |
f<字母> | 向后搜索<字母>并跳轉(zhuǎn)到第一個(gè)匹配的位置 |
F<字母> | 向前搜索<字母>并跳轉(zhuǎn)到第一個(gè)匹配的位置 |
t<字母> | 向后搜索<字母>并跳轉(zhuǎn)到第一個(gè)匹配位置之前的一個(gè)字母 |
T<字母> | 向前搜索<字母>并跳轉(zhuǎn)到第一個(gè)匹配位置之后的一個(gè)字母 |
三. 普通模式下栏账,復(fù)制粘貼和剪切
- 普通模式下使用y復(fù)制
- 普通模式中帖族,yy復(fù)制游標(biāo)所在的整行(3yy表示復(fù)制3行)
- 普通模式中,y^ 復(fù)制至行首挡爵,或y0竖般。不含光標(biāo)所在處字符。
- 普通模式中茶鹃,y$ 復(fù)制至行尾涣雕。含光所在處字符。
- 普通模式中闭翩,yw 復(fù)制一個(gè)單詞挣郭。
- 普通模式中,y2w 復(fù)制兩個(gè)單詞疗韵。
- 普通模式中丈屹,yG 復(fù)制至文本末。
- 普通模式中伶棒,y1G 復(fù)制至文本開(kāi)頭旺垒。
- 普通模式下西永p粘貼
普通模式中,p(小寫(xiě))代表粘貼至光標(biāo)后(下)
普通模式中肤无,P(大寫(xiě))代表粘貼至光標(biāo)后(下)
四. 普通模式下,替換及撤銷(xiāo)
命令 | 說(shuō)明 |
---|---|
r+<待替換字母> | 將游標(biāo)所在字母替換為指定字母 |
R | 連續(xù)替換先蒋,直到按下Esc |
cc | 替換整行,即刪除游標(biāo)所在行宛渐,并進(jìn)入插入模式 |
cw | 替換一個(gè)單詞竞漾,即刪除一個(gè)單詞眯搭,并進(jìn)入插入模式 |
C(大寫(xiě)) | 替換游標(biāo)以后至行末 |
~ | 反轉(zhuǎn)游標(biāo)所在字母大小寫(xiě) |
u{n} | 撤銷(xiāo)一次或n次操作 |
U(大寫(xiě)) | 撤銷(xiāo)當(dāng)前行的所有修改 |
Ctrl+r | redo,即撤銷(xiāo)undo的操 |
五. 普通模式下业岁,快速縮進(jìn)
● 普通模式下輸入15G鳞仙,跳轉(zhuǎn)到15行
● 普通模式下輸入>> 整行將向右縮進(jìn)(使用,用于格式化代碼超爽)
● 普通模式下輸入<< 整行向左回退
● 普通模式下輸入:進(jìn)入命令行模式下對(duì)shiftwidth值進(jìn)行設(shè)置可以控制縮進(jìn)和回退的字符數(shù)
六. 普通模式下笔时,查找
普通模式下輸入/然后鍵入需要查找的字符串 按回車(chē)后就會(huì)進(jìn)行查找棍好。 ?與/功能相同允耿,只不過(guò)借笙?是向上而/是向下查找。 進(jìn)入查找之后较锡,輸入n和N可以繼續(xù)查找 n表示繼續(xù)查找业稼,N反向查找
七. 普通模式下輸入Shift+z即可保存退出vim
插入模式
在普通模式下使用下面的鍵將進(jìn)入插入模式,并可以從相應(yīng)的位置開(kāi)始輸入
命令 | 說(shuō)明 |
---|---|
i | 在當(dāng)前光標(biāo)處進(jìn)行編輯 |
I | 在行首進(jìn)行編輯 |
a | 在光標(biāo)后插入編輯 |
A | 在行未進(jìn)行插入 |
o | 在當(dāng)前行后插入一個(gè)新行 |
O | 在當(dāng)前行前插入一個(gè)新行 |
cw | 替換從光標(biāo)所在位置后到一個(gè)單詞結(jié)尾的字符 |
命令模式
命令 | 說(shuō)明 |
---|---|
:q! | 強(qiáng)制退出蚂蕴,不保存 |
:q | 退出 |
:wq! | 強(qiáng)制保存并退出 |
:w <文件路徑> | 另存為 |
:saveas 文件路徑 | 另存為 |
:x | 保存退出 |
:wq | 保存退出 |
可視模式
- 在普通模式下輸入v(小寫(xiě))低散,進(jìn)入字符選擇模式,就可以移動(dòng)光標(biāo)骡楼,光標(biāo)走過(guò)的地方就會(huì)選取熔号。再次按下v會(huì)后就會(huì)取消選取。
- 在普通模式下輸入V(Shift+v)君编,進(jìn)入行選擇模式跨嘉,按下V之后就會(huì)把整行選取,您可以上下移動(dòng)光標(biāo)選更多的行吃嘿,同樣祠乃,再按一次Shift+v就可以取消選取。
- 在普通模式下輸入 Ctrl+v(小寫(xiě))兑燥,這是區(qū)域選擇模式亮瓷,可以進(jìn)行矩形區(qū)域選擇,再按一次Ctrl+v取消選取降瞳。
- 在普通模式下輸入d刪除選取區(qū)域內(nèi)容
- 在普通模式下輸入y復(fù)制選取區(qū)域內(nèi)容
- 在普通模式下9G跳轉(zhuǎn)到第9行,輸入Shift+v嘱支,進(jìn)入可視模式進(jìn)行行選擇,選中5行挣饥,按下>>縮進(jìn)除师,將5行整體縮進(jìn)。
- 在普通模式下輸入 Ctrl+v扔枫,進(jìn)入可視模式進(jìn)行矩形區(qū)域選擇汛聚,選中第一列字符然后x刪除整列
視窗操作
vim可以在一個(gè)界面里打開(kāi)多個(gè)窗口進(jìn)行編輯,這些編輯窗口稱為vim的視窗短荐。
● 命令行模式下輸入:sp 1.txt 打開(kāi)新的橫向視窗來(lái)編輯1.txt
● 命令行模式下輸入:vsp 2.txt 打開(kāi)新的縱向視窗來(lái)編輯1.txt
● 普通模式下Ctrl-w s 將當(dāng)前窗口分割成兩個(gè)水平的窗口
● 普通模式下Ctrl-w v 將當(dāng)前窗口分割成兩個(gè)垂直的窗口
● 普通模式下Ctrl-w q 即 :q 結(jié)束分割出來(lái)的視窗倚舀。如果在新視窗中有輸入需要使用強(qiáng)制符叹哭!
● 普通模式下Ctrl-w o 打開(kāi)一個(gè)視窗并且隱藏之前的所有視窗
● 普通模式下Ctrl-w j 移至下面視窗
● 普通模式下Ctrl-w k 移至上面視窗
● 普通模式下Ctrl-w h 移至左邊視窗
● 普通模式下Ctrl-w l 移至右邊視窗
● 普通模式下Ctrl-w J 將當(dāng)前視窗移至下面
● 普通模式下Ctrl-w K 將當(dāng)前視窗移至上面
● 普通模式下Ctrl-w H 將當(dāng)前視窗移至左邊
● 普通模式下Ctrl-w L 將當(dāng)前視窗移至右邊
● 普通模式下Ctrl-w - 減小視窗的高度
● 普通模式下Ctrl-w + 增加視窗的高度
使用Vim編輯多個(gè)文件
編輯多個(gè)文件有兩種形式,一種是在進(jìn)入vim前使用的參數(shù)就是多個(gè)文件痕貌。另一種就是進(jìn)入vim后再編輯其他的文件风罩。 同時(shí)創(chuàng)建兩個(gè)新文件并編輯。
vim 1.txt 2.txt
默認(rèn)進(jìn)入1.txt文件的編輯界面
● 命令行模式下輸入:n編輯2.txt文件舵稠,可以加!即:n!強(qiáng)制切換超升,之前一個(gè)文件的輸入沒(méi)有保存,僅僅切換到另一個(gè)文件
● 命令行模式下輸入:N編輯1.txt文件柱查,可以加!即:N!強(qiáng)制切換廓俭,之前文件內(nèi)的輸入沒(méi)有保存云石,僅僅是切換到另一個(gè)文件
● 命令行模式下輸入:e 3.txt 打開(kāi)新文件3.txt
● 命令行模式下輸入:e# 回到前一個(gè)文件
● 命令行模式下輸入:ls可以列出以前編輯過(guò)的文檔
● 命令行模式下輸入:b 2.txt(或者編號(hào))可以直接進(jìn)入文件2.txt編輯
● 命令行模式下輸入:bd 2.txt(或者編號(hào))可以刪除以前編輯過(guò)的列表中的文件項(xiàng)目
● 命令行模式下輸入:e! 4.txt唉工,新打開(kāi)文件4.txt,放棄正在編輯的文件
● 命令行模式下輸入:f 顯示正在編輯的文件名
● 命令行模式下輸入:f new.txt汹忠,改變正在編輯的文件名字為new.txt
在vim執(zhí)行外部命令
在命令行模式中輸入!可以執(zhí)行外部的shell命令
● :!ls 用于顯示當(dāng)前目錄的內(nèi)容
● :!rm FILENAME用于刪除名為 FILENAME 的文件
● :w FILENAME可將當(dāng)前 VIM 中正在編輯的文件另存為 FILENAME 文件