vim入門

相對于IDE苛茂,vim的學(xué)習(xí)成本較高之宿,但一旦熟悉vim后族操,開發(fā)效率是非常高的。vim的命令非常多比被,但在工作中常用的卻比較少色难,本著實用主義泼舱,參考Learn Vim Progressively,整理最有用的命令枷莉,也便自己以后查閱娇昙。下面涉及到ctrl鍵的組合操作,如ctrlr組合依沮,用<C-r>表示

1. 模式

vim有三種模式:普通(normal)模式涯贞、插入(insert)模式和命令(command)模式。剛進(jìn)入vim時默認(rèn)進(jìn)入普通模式危喉,下面看下各模式的轉(zhuǎn)換:

普通模式下鍵入i進(jìn)行插入模式
普通模式下鍵入:進(jìn)入命令模式
ESC退出插入模式和命令模式

vim的文檔非常全宋渔,在命令模式下,我們可以鍵入hhelp打開幫忙文檔辜限,也可以直接鍵入help <command>皇拣,查看指定命令的幫助文檔,如help i薄嫡。

在普通模式下通過hjkl(左下上右)移動光標(biāo)氧急,插入模式下可以鍵入任意字符,命令模式下可以輸入命令毫深,回車鍵執(zhí)行命令吩坝。如何退出呢,進(jìn)入命令模式哑蔫,鍵入q就可以退出了钉寝,如果有更新會提示你保存,鍵入w進(jìn)行保存闸迷。也可以同時鍵入wq保存退出嵌纲。

2. 移動

上面講了hjkl可以在普通模式下對光標(biāo)進(jìn)行移動。如果只支持光標(biāo)按字符移動腥沽,那就太沒效率了逮走,下面這些命令可以快速將光標(biāo)移動到目標(biāo)位置。

先來看看光標(biāo)在當(dāng)前行中的移動:

0:數(shù)字零今阳,將光標(biāo)移動到行首
^:將光標(biāo)移動到當(dāng)前行第一個不是blank的位置师溅,所謂blank,是指空格盾舌、tab险胰、換行、回車等不可見字符)
$:將光標(biāo)移動到行尾
g_:將光標(biāo)移動到當(dāng)前行最后一個不是blank的位置
gg:將光標(biāo)移動第一行
G:將光標(biāo)移動第最后一行
NG:N是行號矿筝,即將光標(biāo)移動了第N行,如3G棚贾,表示將光標(biāo)移動到第三行
w/W:移動到下一個單詞的開頭
e/E:移動到下一個單詞的結(jié)尾
b/B:移動到上一個單詞的開頭

其中單詞間的移動大小寫的區(qū)別是單詞劃分規(guī)則不同窖维,小寫w榆综、e、b的單詞是由字母铸史、數(shù)據(jù)加下劃線組成的單詞鼻疮,而大寫W、E琳轿、B的單詞是由字符組成判沟,已空格區(qū)分。如下所示:

再來看下更強大的一些移動操作:

%:匹配括號移動崭篡,包括 `(, {, [ `
f/F:如`fa`挪哄,移動到下一個為a的字符處,也可以是fs琉闪,移動到下一個為s的字符迹炼,大寫F表示反向移動,也可以使用3fa颠毙,表示移動到第三個為a的字符處
t/T:如`t;`斯入,移動到分號`;`前的一個字符,大寫T表示反向移動蛀蜜,也可以使用`3t;`,表示移動到第三個分號`;`前的一個字符

下圖更直觀展示各種移動操作:

3. 常用操作

x:刪除光標(biāo)所處字符刻两,也可以在前面指定數(shù)字N,表示刪除從當(dāng)前光標(biāo)開始后的N個字符滴某,如`4N`磅摹,刪除光標(biāo)后的4個字符(包含光標(biāo)所處字符)
dd:刪除當(dāng)前光標(biāo)所處行偏瓤,也可以在前面指定數(shù)字N
yy或Y:復(fù)制當(dāng)前行橙依,也可以在前面指定數(shù)據(jù)N
p:粘貼剪切板
a:在光標(biāo)之后插入
o:在當(dāng)前行后插入一個新行
O:在當(dāng)前行前插入一個新行
cw:替換從光標(biāo)所處位置到單詞結(jié)尾的字符
u:撤銷
<C-r>:反撤銷
<C-n>或<C-p>:自動提示
.:重復(fù)上一個命令
=:將光標(biāo)所處行及之后的行自動縮進(jìn),通用使用`gg=`,對整個文件進(jìn)行自動縮進(jìn)刷喜。
<,>:左右縮進(jìn)

另外說兩個時常用的比較多的命令como初茶,需要在命令模塊下執(zhí)行搁宾,
如將1到10的行拷貝插入到100行:

:1,10 co 100

又如將1到10行剪切插入到100行:

:1,10 mo 100

4. 查找替換

/pattern:搜索 pattern 的字符串奸忽,如果搜索出多個匹配,可按n鍵到下一個,按N鍵到上一個
*和#:匹配光標(biāo)當(dāng)前所在的單詞暴备,移動光標(biāo)到下一個(或上一個)匹配單詞
:%s/this/that/g:全局將`this`替換為`that`

5. 可視化選擇

在普通模式下鍵入vV后,vim左下角會出現(xiàn)-- 可視 --狀態(tài)提示凌外,此時移動光標(biāo)可以進(jìn)行行選擇或?qū)π兄械木植孔址x擇,如:

v$U:表示將光標(biāo)所處的行全部轉(zhuǎn)化為大寫涛浙,分解如下:
v -> 進(jìn)入可視化選擇
$ -> 將光標(biāo)移動到行尾康辑,即選擇了當(dāng)前行
U -> 將選擇的內(nèi)容轉(zhuǎn)化為大寫

也可以使用<C-v>進(jìn)行塊選擇摄欲,此時vim左下角會出現(xiàn)-- 可視 塊 --,來看兩個常用操作疮薇,下面是對指定行進(jìn)行注釋:

<C-v>GI# ESC:將當(dāng)前行到最后一行的進(jìn)行注釋蒿涎,命令分解如下:
<C-v> -> 進(jìn)行可視塊
G ->將光標(biāo)跳轉(zhuǎn)到最后一行
I -> 進(jìn)入可視化編輯
# -> 在行前添加`# `
ESC -> 退出可視化及可視化編輯

又如在每行后添加注釋:

<C-v>G$A# your comment ESC:從當(dāng)前行到最后一行的所有行末加上`# your comment`,命令分解如下:
<C-v> -> 進(jìn)行可視塊
G -> 將光標(biāo)跳轉(zhuǎn)到最后一行
$ -> 將光標(biāo)跳轉(zhuǎn)到行末
A -> 在行末進(jìn)行可視化編輯
# your comment -> 添加注釋內(nèi)容
ESC -> 退出可視化及可視化編輯

6. 分屏與多文件操作

常用分屏命令惦辛,以下命令需要在命令模式下執(zhí)行:

sp:水平分屏
vs:垂直分屏
<C-w><dir>:dir是方向,可以是 hjkl 或是 ←↓↑→ 中的一個仓手,其用來切換分屏
<C-w>[N]+:增加當(dāng)前分屏間的尺寸胖齐,N可選,表示增加的尺寸個數(shù)
<C-w>[N]-:減少當(dāng)前分屏的尺寸嗽冒,N可選呀伙,表示減少的尺寸個數(shù)
<C-w>=:均分分屏
<C-w>|:最大化當(dāng)前分屏

我看代碼時,經(jīng)常會打開多個文件添坊,vim支持打開多個文件以及在各個文件之間跳轉(zhuǎn)剿另。在命令模式下,使用e命令打開文件:

:e file.txt

使用ls命令查看當(dāng)前打開的文件贬蛙,如:

命令模式下雨女,使用bn打開下一個文件,使用bp打開上一個文件阳准,也可以使用buffer 文件序號打開指定序號的文件氛堕,如下圖中打開序號為3的文件3.txt

:buffer 3

7. 錄制宏

對于vim的宏來講,可以簡單理解為是將一串命令存儲到寄存器中野蝇。用下面例子說明宏的使用方法讼稚,在數(shù)據(jù)庫我們經(jīng)常需要進(jìn)行分表處理中,通常會寫下面這樣的SQL命令:

CREATE TABLE LIKE your_table_0;

假設(shè)我們要分64張表绕沈,如果一個個的粘貼復(fù)制锐想,再修改表象,就太麻煩了乍狐,我們可以使用宏來幫我們完成這個任務(wù)赠摇,將光標(biāo)移到上面行中,執(zhí)行如下命令:

qaYp$T_<C-a>q

上面命令是什么意思澜躺,其它比較簡單蝉稳,分解如下:

qa -> 開始錄制宏,并存到寄存器a中
Yp -> 復(fù)制當(dāng)面光桿所在行
$ -> 將光桿移動到行末尾
T_ -> 向后移動光桿直到出現(xiàn)_為止(即將光標(biāo)移動到數(shù)字上)
<C-a> -> ctrl + a對光標(biāo)所處的數(shù)字+1
q -> 停止錄制宏

執(zhí)行完上面命令后掘鄙,實際上已經(jīng)完成了創(chuàng)建your_table_1表的SQL語句耘戚,此時,只需要將光標(biāo)放到這條sql命令所處行中操漠,利用@a可以將寄存器a中的宏進(jìn)行重放收津,同時可以在前面指定重放次數(shù)饿这,如執(zhí)行以下命令創(chuàng)建后續(xù)62張表:

62@a

這便完成了對your_table進(jìn)行64分表的SQL語句,合理利用錄制宏命令撞秋,可以極大提高效率长捧。

小結(jié)

剛開始學(xué)習(xí)vim有點痛苦分井,因為這些命令更多的是要先記住谒拴,最好的辦法是不斷的實踐,熟能生巧跪妥,最終你會喜歡上vim舅列。

參考

[1] http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肌割,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子帐要,更是在濱河造成了極大的恐慌把敞,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榨惠,死亡現(xiàn)場離奇詭異奋早,居然都是意外死亡,警方通過查閱死者的電腦和手機赠橙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門耽装,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人简烤,你說我怎么就攤上這事剂邮。” “怎么了横侦?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵挥萌,是天一觀的道長。 經(jīng)常有香客問我枉侧,道長引瀑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任榨馁,我火速辦了婚禮憨栽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翼虫。我一直安慰自己屑柔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布珍剑。 她就那樣靜靜地躺著掸宛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪招拙。 梳的紋絲不亂的頭發(fā)上唧瘾,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天措译,我揣著相機與錄音,去河邊找鬼饰序。 笑死领虹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的求豫。 我是一名探鬼主播塌衰,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蝠嘉!你這毒婦竟也來了猾蒂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤是晨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后舔箭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罩缴,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年层扶,在試婚紗的時候發(fā)現(xiàn)自己被綠了箫章。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡镜会,死狀恐怖檬寂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戳表,我是刑警寧澤桶至,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站匾旭,受9級特大地震影響镣屹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜价涝,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一女蜈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧色瘩,春花似錦伪窖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至史辙,卻和暖如春汹买,著一層夾襖步出監(jiān)牢的瞬間佩伤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工晦毙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留生巡,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓见妒,卻偏偏與公主長得像孤荣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子须揣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 公司新員工學(xué)習(xí)有用到盐股,Vim官網(wǎng)的手冊又太大而全,而網(wǎng)上各方資料要么不全面耻卡,要么不夠基礎(chǔ)疯汁。在網(wǎng)上搜集各方資料,按照...
    甲魚閱讀 160,705評論 43 686
  • 介紹Vim三種操作模式和文本編輯命令卵酪。Vim編輯模式插入字符幌蚊,行尾、行首插入溃卡,刪除一個字符和刪除整行命令溢豆,Vim復(fù)...
    特特不尋芳閱讀 892評論 0 3
  • Vim是一個類似于Vi的著名的功能強大、高度可定制的文本編輯器瘸羡,在Vi的基礎(chǔ)上改進(jìn)和增加了很多特性漩仙。[1]VIM是...
    QoioQ閱讀 4,057評論 0 65
  • 剛?cè)腴T Vim,網(wǎng)上找了很多資料犹赖,有的太復(fù)雜不適合我這樣的新手队他,有的不全,自己動手整理一份峻村。參考了一些資料漱挎,備注鏈...
    波段頂?shù)?/span>閱讀 5,959評論 0 11
  • 當(dāng)你突然理解自由的意義時磕谅,你就不再想和一個人一輩子的綁在一起。 會怕失去雾棺,怕猜疑膊夹,怕不順心,因為人最后愛的是自己捌浩。
    是煙火是夜深處的光閱讀 244評論 0 0