vim

從vi演生出來的Vim具有多種模式,這種獨(dú)特的設(shè)計(jì)容易使初學(xué)者產(chǎn)生混淆。幾乎所有的編輯器都會(huì)有插入和執(zhí)行命令兩種模式,并且大多數(shù)的編輯器使用了與Vim截然不同的方式:命令目錄(鼠標(biāo)或者鍵盤驅(qū)動(dòng)),組合鍵(通常通過control鍵(CTRL)和alt鍵(ALT)組成)或者鼠標(biāo)輸入。Vim和vi一樣,僅僅通過鍵盤來在這些模式之中切換。這就使得Vim可以不用進(jìn)行菜單或者鼠標(biāo)操作,并且最小化組合鍵的操作。對文字錄入員或者程序員可以大大增強(qiáng)速度和效率。

Vim具有6種基本模式和5種派生模式,我們這里只簡單介紹下6種基本模式:

普通模式(Normal mode):

在普通模式中,用的編輯器命令,比如移動(dòng)光標(biāo),刪除文本等等。這也是Vim啟動(dòng)后的默認(rèn)模式。這正好和許多新用戶期待的操作方式相反(大多數(shù)編輯器默認(rèn)模式為插入模式)。

Vim強(qiáng)大的編輯能來自于其普通模式命令。普通模式命令往往需要一個(gè)操作符結(jié)尾。例如普通模式命令dd刪除當(dāng)前行,但是第一個(gè)"d"的后面可以跟另外的移動(dòng)命令來代替第二個(gè)d,比如用移動(dòng)到下一行的"j"鍵就可以刪除當(dāng)前行和下一行。另外還可以指定命令重復(fù)次數(shù),2dd(重復(fù)dd兩次),和dj的效果是一樣的。用戶學(xué)習(xí)了各種各樣的文本間移動(dòng)/跳轉(zhuǎn)的命令和其他的普通模式的編輯命令,并且能夠靈活組合使用的話,能夠比那些沒有模式的編輯器更加高效的進(jìn)行文本編輯。

在普通模式中,有很多方法可以進(jìn)入插入模式。比較普通的方式是按a(append/追加)鍵或者i(insert/插入)鍵。


插入模式(Insert mode):

在這個(gè)模式中,大多數(shù)按鍵都會(huì)向文本緩沖中插入文本。大多數(shù)新用戶希望文本編輯器編輯過程中一直保持這個(gè)模式。

在插入模式中,可以按ESC鍵回到普通模式。


可視模式(Visual mode)

這個(gè)模式與普通模式比較相似。但是移動(dòng)命令會(huì)擴(kuò)大高亮的文本區(qū)域。高亮區(qū)域可以是字符、行或者是一塊文本。當(dāng)執(zhí)行一個(gè)非移動(dòng)命令時(shí),命令會(huì)被執(zhí)行到這塊高亮的區(qū)域上。Vim的"文本對象"也能和移動(dòng)命令一樣用在這個(gè)模式中。


選擇模式(Select mode)

這個(gè)模式和無模式編輯器的行為比較相似(Windows標(biāo)準(zhǔn)文本控件的方式)。這個(gè)模式中,可以用鼠標(biāo)或者光標(biāo)鍵高亮選擇文本,不過輸入任何字符的話,Vim會(huì)用這個(gè)字符替換選擇的高亮文本塊,并且自動(dòng)進(jìn)入插入模式。


命令行模式(Command line mode)

在命令行模式中可以輸入會(huì)被解釋成并執(zhí)行的文本。例如執(zhí)行命令(:鍵),搜索(/和?鍵)或者過濾命令(!鍵)。在命令執(zhí)行之后,Vim返回到命令行模式之前的模式,通常是普通模式。


Ex模式(Ex mode)

這和命令行模式比較相似,在使用:visual命令離開Ex模式前,可以一次執(zhí)行多條命令。

這其中我們常用到就是普通模式、插入模式和命令行模式。

VIM三種模式的切換

進(jìn)入vim處于普通模式,按i(insert)或a(append)切換到插入模式,在插入模式中按ESC退回到普通模式。

在普通模式中按shift+:進(jìn)入命令行模式。


進(jìn)入VIM

1.使用vim命令進(jìn)入vim界面

vim后面加上你要打開的已存在的文件名或者不存在(則作為新建文件)的文件名。

vim practice.txt

直接使用vim也可以打開vim編輯器,但是不會(huì)打開任何文件。

vim?

進(jìn)入命令行模式后輸入:e 文件路徑同樣可以打開相應(yīng)文件.

2.游標(biāo)移動(dòng)

在進(jìn)入vim后,按下i鍵進(jìn)入插入模式。在該模式下您可以輸入文本信息。輸入信息之后,可以按ESC退回到普通模式。

在該模式下使用方向鍵或者h(yuǎn),j,k,l鍵可以移動(dòng)游標(biāo)。

h 左移動(dòng)、 l 右移動(dòng)、k上移動(dòng)、j下移動(dòng)、w移動(dòng)到下一個(gè)單詞、b移動(dòng)到上一個(gè)單詞



3. 進(jìn)入插入模式

在普通模式下使用下面的鍵將進(jìn)入插入模式,并可以從相應(yīng)的位置開始輸入

i(在當(dāng)前光標(biāo)處進(jìn)行編輯)

I(在行首處進(jìn)行編輯)

A(在行尾處進(jìn)行編輯)

a(在光標(biāo)后進(jìn)行編輯)

o(在當(dāng)前行后插入一個(gè)新行)

O(在當(dāng)前行前插入一個(gè)新行)

cw(替換從光標(biāo)所在位置后到一個(gè)單詞結(jié)尾的字符)

注意每次要先回到普通模式才能切換成以不同的方式進(jìn)入插入模式


4. 保存文檔

從普通模式輸入:進(jìn)入命令行模式,輸入wq回車,保存并退出編輯

:!q (強(qiáng)制退出,不保存)

:q (退出)

:wq!(強(qiáng)制保存并退出)

:w? <文件路徑>(另存為)

:save as <文件路徑> (另存為)

:x (保存并退出)

:wq (保存并退出)

普通模式下輸入Shift+zz即可保存退出vim


5. 刪除文本

普通模式下刪除vim文本信息

進(jìn)入普通模式,使用下列命令可以進(jìn)行文本快速刪除:

x : 刪除游標(biāo)所在的字符

X: 刪除游標(biāo)所在前一個(gè)字符

delete : 同x

dd: 刪除整行

dw: 刪除一個(gè)單詞

d$ 或 D 刪除至行尾

d^: 刪除至行首

dG: 刪除到文檔結(jié)尾處

d1G: 刪除文檔首部

vim初體驗(yàn)?zāi)闶遣皇怯X得很奇妙呢,或許目前你還沒有vim產(chǎn)生任何好感,不覺得它是一款優(yōu)秀的編輯器,那只能是因?yàn)槟氵€沒能掌握vim的精髓,或者是你打字太慢,回去在小霸王學(xué)習(xí)機(jī)上再練練吧-_-||。這里也可以先透露下,vim的精髓就在于命令鍵的組合,全鍵盤的操作,可以使你手不離開鍵盤輸入?yún)^(qū)域即可完成所有的操作,那可真是即高效又炫酷的體驗(yàn)啊,當(dāng)你掌握這項(xiàng)技能絕對可以秒掉其它不會(huì)用vim的程序員幾條街(起碼在氣勢上吧,當(dāng)然還要除掉哪些只會(huì)Emacs的程序員,因?yàn)镋macs與Vim之間有場戰(zhàn)爭,感興趣的可以看這里Emacs和Vim:神的編輯器和編輯器之神)



vim重復(fù)命令

1. 重復(fù)上次執(zhí)行的命令

在普通模式下.(小數(shù)點(diǎn))表示重復(fù)上一次的命令操作。

普通模式下輸入x,刪除第一個(gè)字符,輸入.(小數(shù)點(diǎn))會(huì)再次刪除一個(gè)字符,除此之外也可以重復(fù)dd的刪除操作

2. 執(zhí)行指定次數(shù)相同的命令

進(jìn)入普通模式輸入N,N表示重復(fù)后面的次數(shù)。

輸入10x,刪除10個(gè)連續(xù)字符

輸入3dd,將會(huì)刪除3行文本

在普通模式下,你還可以使用dw或者daw(delete a word)刪除一個(gè)單詞,所以你可以很容易的聯(lián)想到dnw(n替換為相應(yīng)數(shù)字)表示刪除n個(gè)單詞


游標(biāo)的快速跳轉(zhuǎn)

普通模式下,下列命令可以讓光標(biāo)快速調(diào)轉(zhuǎn)到指定位置,我們分別討論快速實(shí)現(xiàn)行間跳轉(zhuǎn)和行內(nèi)跳轉(zhuǎn)


行間跳轉(zhuǎn)

小技巧:你在完成依次跳轉(zhuǎn)后,可以使用Ctrl+o快速回到上一次(跳轉(zhuǎn)前)光標(biāo)所在位置,這個(gè)技巧很實(shí)用,比如當(dāng)你在寫代碼時(shí),忽然想起有個(gè)bug,需要修改,這時(shí)候你跳過去改好了,只需要按下Ctrl+o就可以回到你之前的位置。vim中會(huì)用很多類似的小技巧就等著你去發(fā)掘。


行內(nèi)跳轉(zhuǎn)


復(fù)制粘貼和剪切


復(fù)制粘貼

其實(shí)前面講得dd刪除命令就是剪切,你每次dd刪除文檔內(nèi)容后,便可以使用p來粘貼,也這一點(diǎn)可以讓我們實(shí)現(xiàn)一個(gè)很爽快的功能——交換上下行:

ddp,就這么簡單,即實(shí)現(xiàn)了快速交換光標(biāo)所在行與它下面的行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容