Vim模式介紹與命令合集

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 文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淋硝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宽菜,更是在濱河造成了極大的恐慌谣膳,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铅乡,死亡現(xiàn)場(chǎng)離奇詭異继谚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)阵幸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)花履,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挚赊,“玉大人诡壁,你說(shuō)我怎么就攤上這事≤睿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)室囊。 經(jīng)常有香客問(wèn)我融撞,道長(zhǎng)致扯,這世上最難降的妖魔是什么义桂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任溉瓶,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赖临。我一直安慰自己胞锰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布兢榨。 她就那樣靜靜地躺著嗅榕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吵聪。 梳的紋絲不亂的頭發(fā)上凌那,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音吟逝,去河邊找鬼帽蝶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛块攒,可吹牛的內(nèi)容都是我干的励稳。 我是一名探鬼主播佃乘,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼驹尼!你這毒婦竟也來(lái)了趣避?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤新翎,失蹤者是張志新(化名)和其女友劉穎程帕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體地啰,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愁拭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亏吝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岭埠。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖顺呕,靈堂內(nèi)的尸體忽然破棺而出枫攀,到底是詐尸還是另有隱情括饶,我是刑警寧澤株茶,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站图焰,受9級(jí)特大地震影響启盛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜技羔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一僵闯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧藤滥,春花似錦鳖粟、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至标沪,卻和暖如春榄攀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背金句。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工檩赢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人违寞。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓贞瞒,卻偏偏與公主長(zhǎng)得像偶房,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子军浆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345