用vim優(yōu)雅的編輯

Vim是從vi發(fā)展起來(lái)的一個(gè)超簡(jiǎn)潔的文本編輯器辛友,全稱為Vi IMporved。使用vim可以實(shí)現(xiàn)全鍵盤操作孕豹,擺脫鼠標(biāo)操作痛苦框弛。

Vim簡(jiǎn)介

Vim的設(shè)計(jì)理念是命令的組合辛辨。在Vim中可以使用各種各樣的組合命令來(lái)完成我們的編輯。模式是一個(gè)編輯器所必備的瑟枫,幾乎所有的編輯器都會(huì)有插入和執(zhí)行兩種模式斗搞,可以用鍵盤和鼠標(biāo)完成模式的切換和命令的執(zhí)行。Vim具有挺多種模式慷妙,常用的有普通模式僻焚、插入模式、可視模式和命令行模式景殷。

其中Vim強(qiáng)大的編輯能力有很大一部分來(lái)源于它的普通模式溅呢,而普通模式的強(qiáng)大就在于命令的組合澡屡。在本文的后半部分我們將看到普通模式下的一些常用命令猿挚。

在正式開始盛宴之前,我們先來(lái)幾條小小的約定驶鹉。

1. 停頓時(shí)請(qǐng)移開畫筆绩蜻。
不同于其他編輯器將插入模式作為默認(rèn)狀態(tài),普通模式才是Vim的默認(rèn)狀態(tài)室埋。所以办绝,只在編寫代碼的那幾分鐘內(nèi)進(jìn)入插入模式,其他時(shí)候請(qǐng)保持普通模式姚淆。

2. 告別esc孕蝉,遠(yuǎn)離方向鍵。
Vim可以有兩種方式實(shí)現(xiàn)普通模式和插入模式之間的切換腌逢,esc<C-[>(就是Control+[)降淮,可兩種方式都很難操作,esc太遠(yuǎn)搏讶,Control偏下佳鳖,為此我們可以嘗試調(diào)換CapslockControl的位置,并將<C-[>作為默認(rèn)切換方式媒惕。

方向鍵由于距離太遠(yuǎn)將會(huì)極大的減緩我們的操作效率系吩,Vim中我們將用hjkl分表代表上下左右。

3. 強(qiáng)大的重復(fù)操作符.
之所以將它放在約定中妒蔚,是因?yàn)槭褂弥貜?fù)操作會(huì)呈幾何倍數(shù)的提高我們的效率关摇。.命令可以重復(fù)修改上次的操作鸥滨,它是Vim中最強(qiáng)大的多面手尊沸。

插入模式

前面提到大部分命令在普通模式下執(zhí)行,不過(guò)有些功能在插入模式下可以更好的執(zhí)行尊搬。

  • <C-a> 跳轉(zhuǎn)到當(dāng)前行首
  • <C-b> 向前移動(dòng)一個(gè)單詞
  • <C-d> 減少縮進(jìn)
  • <C-h> 刪除前一個(gè)字符(同Backspace
  • <C-k> 刪除當(dāng)前行光標(biāo)后面的內(nèi)容
  • <C-w> 刪除前一個(gè)單詞
  • <C-u> 刪除至行首
  • <C-t> 增加縮進(jìn)

這里只列出幾個(gè)較常用的,更多可以查看:help insert-index土涝,里面有很詳細(xì)的命令解釋佛寿,另外這些命令并不是Vim獨(dú)有的,在shell中一樣可以用但壮。

普通模式

普通模式下我們可以執(zhí)行大多數(shù)操作冀泻,并可以將操作符和動(dòng)作命令結(jié)合起來(lái)實(shí)現(xiàn)強(qiáng)大的功能。還記得怎么進(jìn)入普通模式嗎蜡饵?對(duì)了弹渔,就是<C-[>

1. 移動(dòng)和跳轉(zhuǎn)


單行跳轉(zhuǎn)

  • h 左移一個(gè)字符
  • j 下移一個(gè)字符
  • k 上移一個(gè)字符
  • l 右移一個(gè)字符
  • 10h 向下移動(dòng)10行

單詞跳轉(zhuǎn)

  • w 跳到下一個(gè)單詞的詞首
  • e 跳到下一個(gè)單詞的詞尾
  • b 跳到上一個(gè)單詞的詞首
  • nw 跳轉(zhuǎn)到后面第n個(gè)單詞

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

  • ^ 跳到當(dāng)前行的開頭(忽視行首空格)
  • 0| 跳到當(dāng)前行的開頭(包括行首空格)
  • $或 跳到當(dāng)前行的行尾
  • g _ 跳到當(dāng)前行的行尾(不包括空格)
  • f x 跳到本行的下一個(gè)x處
  • F x 跳到本行的上一個(gè)x處
  • ; 重復(fù)上一次跳轉(zhuǎn)
  • n| 跳到當(dāng)前行的第n列

文檔內(nèi)跳轉(zhuǎn)

  • gg 跳到文檔第一行
  • G 跳到文檔最后一行
  • nggnG 跳到文檔的第n行
  • + 跳到下一行行首
  • - 跳到上一行行首

當(dāng)前屏幕跳轉(zhuǎn)

  • H 移動(dòng)到當(dāng)前屏幕的頂端
  • M 移動(dòng)到當(dāng)前屏幕的中間
  • L 移動(dòng)到當(dāng)前屏幕的底端

移動(dòng)當(dāng)前行

  • zz 移動(dòng)當(dāng)前行到中間
  • zt 移動(dòng)當(dāng)前行到屏幕頂端
  • zb 移動(dòng)當(dāng)前行到屏幕底端

2. 搜索和標(biāo)記


文檔內(nèi)檢索

  • /+xxx 查找xxx
  • * 查找下一個(gè)光標(biāo)所在的單詞
  • # 查找上一個(gè)光標(biāo)所在的單詞
  • n 跳到下一個(gè)查找的單詞
  • N 跳到上一個(gè)查找的單詞
  • :noh 取消本次高亮

文檔內(nèi)標(biāo)記

  • m x 標(biāo)記當(dāng)前位置為x
  • ' x 跳到標(biāo)記為x的位置
  • ' ' 跳到跳轉(zhuǎn)之前的位置

3. 即時(shí)執(zhí)行操作


切換到插入模式

  • i 插入到光標(biāo)前
  • a 插入到光標(biāo)后
  • I 插入到當(dāng)前行的開始
  • A 插入到當(dāng)前行的末尾
  • o 向下插入一行
  • O 向上插入一行

普通模式下編輯

  • r 修改當(dāng)前字符(改完后自動(dòng)切換)
  • R 修改自光標(biāo)起及之后的字符(需手動(dòng)切換到普通模式)
  • x 刪除當(dāng)前字符
  • X 刪除光標(biāo)前的字符
  • s 刪除當(dāng)前字符并進(jìn)入插入模式
  • S 刪除當(dāng)前行并進(jìn)入插入模式
  • c 修改(一般用于合成命令)
  • d 剪切(一般用于合成命令)
  • y 復(fù)制(一般用于合成命令)
  • dd 刪除當(dāng)前行
  • yy 復(fù)制當(dāng)前行
  • p 粘貼到當(dāng)前行的下方
  • P 粘貼到當(dāng)前行的上方
  • ~ 大小寫反轉(zhuǎn)

撤銷和恢復(fù)撤銷

  • u 撤銷上一步操作
  • <C-r> 恢復(fù)上一步操作

縮進(jìn)

  • > 增加縮進(jìn)
  • < 減少縮進(jìn)
  • = 自動(dòng)縮進(jìn)

可視模式

Vim的可視模式類似于其他編輯器按住鼠標(biāo)拖動(dòng)選擇區(qū)域溯祸,卻又有些許不同肢专,在可視模式下可以使用普通模式的命令來(lái)操作。


激活可視模式

  • v 激活面向字符的可視模式
  • V 激活面向行的可視模式
  • <C-v> 激活面向列的可視模式
  • gv 重選上次的高亮區(qū)域

切換可視模式

  • o 在可視模式下可以切換選取的活動(dòng)端

命令模式

在命令模式下我們可以為Vim開辟一塊新天地焦辅。命令模式下博杖,可以使用復(fù)雜的命令。在編輯模式下鍵入:筷登,光標(biāo)就跳到屏幕最后一行剃根,并在那里顯示冒號(hào),此時(shí)已進(jìn)入命令模式前方。這篇文章不過(guò)多介紹命令模式狈醉。


打開、保存和退出

  • :e test.txt 在打開的vim中打開test.txt文件
  • :w 保存當(dāng)前文件
  • :q 退出當(dāng)前文件
  • :w test2.txt 另存文件為test2.txt(原文件依然存在)
  • :qall 退出多個(gè)文件
  • :q! 強(qiáng)制退出當(dāng)前文件(所做的修改將不會(huì)保存)
  • :wq 保存并退出當(dāng)前文件

分屏

  • :sp(lit) 上下分屏
  • :vsp(lit) 左右分屏
  • <C-w>+hjkl 在不同屏之間切換

標(biāo)簽頁(yè)

  • :tabnew 新建標(biāo)簽頁(yè)
  • :tabnew filename 在新標(biāo)簽頁(yè)中打開文件
  • :tabn(ext) 跳到下一個(gè)標(biāo)簽頁(yè)
  • :tabN(ext) 跳到上一個(gè)標(biāo)簽頁(yè)
  • :tabfir(st) 跳到第一個(gè)標(biāo)簽頁(yè)
  • :tabl(ast) 跳到最后一個(gè)標(biāo)簽頁(yè)
  • :tabo(nly) 關(guān)閉除當(dāng)前標(biāo)簽頁(yè)以外的其他標(biāo)簽頁(yè)

芳草有情皆礙馬惠险,好云無(wú)處不遮樓苗傅。編輯器加IDE成百上千,沒有孰好孰壞班巩,只要是對(duì)的便是最好的渣慕。學(xué)問(wèn),重在內(nèi)功修煉趣竣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末摇庙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子遥缕,更是在濱河造成了極大的恐慌卫袒,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件单匣,死亡現(xiàn)場(chǎng)離奇詭異夕凝,居然都是意外死亡宝穗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門码秉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)逮矛,“玉大人,你說(shuō)我怎么就攤上這事转砖⌒攵Γ” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵府蔗,是天一觀的道長(zhǎng)晋控。 經(jīng)常有香客問(wèn)我,道長(zhǎng)姓赤,這世上最難降的妖魔是什么赡译? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮不铆,結(jié)果婚禮上蝌焚,老公的妹妹穿的比我還像新娘。我一直安慰自己誓斥,他們只是感情好只洒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岖食,像睡著了一般红碑。 火紅的嫁衣襯著肌膚如雪舞吭。 梳的紋絲不亂的頭發(fā)上泡垃,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音羡鸥,去河邊找鬼蔑穴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惧浴,可吹牛的內(nèi)容都是我干的存和。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼衷旅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捐腿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起柿顶,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤茄袖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后嘁锯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宪祥,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聂薪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝗羊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藏澳。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖耀找,靈堂內(nèi)的尸體忽然破棺而出翔悠,到底是詐尸還是另有隱情,我是刑警寧澤野芒,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布凉驻,位于F島的核電站,受9級(jí)特大地震影響复罐,放射性物質(zhì)發(fā)生泄漏涝登。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一效诅、第九天 我趴在偏房一處隱蔽的房頂上張望胀滚。 院中可真熱鬧,春花似錦乱投、人聲如沸咽笼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剑刑。三九已至,卻和暖如春双肤,著一層夾襖步出監(jiān)牢的瞬間施掏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工茅糜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留七芭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓蔑赘,卻偏偏與公主長(zhǎng)得像狸驳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缩赛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

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

  • 命令歷史 以:和/開頭的命令都有歷史紀(jì)錄耙箍,可以首先鍵入:或/然后按上下箭頭來(lái)選擇某個(gè)歷史命令。 啟動(dòng)vim 在命令...
    im螞蟻閱讀 30,756評(píng)論 3 48
  • 目錄(?)[-] 關(guān)于Vim 1 Vim的幾種模式 啟動(dòng)Vim 文檔操作 光標(biāo)的移動(dòng) 1 基本移動(dòng) 2 翻屏 3 ...
    SunnyLeong閱讀 8,667評(píng)論 0 32
  • 曾經(jīng)在思科的工廠測(cè)試系統(tǒng)`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超過(guò)2年半酥馍,現(xiàn)在...
    戈多在地獄閱讀 1,797評(píng)論 1 13
  • n首先很感謝公司給了我申請(qǐng)個(gè)人開發(fā)者賬號(hào)的機(jī)會(huì)辩昆,又給了我申請(qǐng)公司開發(fā)者賬號(hào)的機(jī)會(huì)。為啥要申請(qǐng)兩個(gè)呢物喷,這是因?yàn)楫?dāng)時(shí)公...
    道道明明白白閱讀 6,606評(píng)論 13 22
  • 犯錯(cuò)總是 難免的 已經(jīng)非常謹(jǐn)慎 也不能幸免 觀察入微了 可以真接對(duì)話 合體了 欲望和金錢 總會(huì)不枉 一直付出的努力...
    靖哥哥利涉大川閱讀 187評(píng)論 0 0