Vim從入門到放棄

不可否認(rèn),Vim是一款優(yōu)秀的編輯器,尤其是其體積之小、速度之快、可擴(kuò)展性之強(qiáng),使其屹立至今,我的朋友曾經(jīng)遇到一個(gè)朋友,在打拳皇的時(shí)候詢問(wèn)上下左右是不是用的HJKL,當(dāng)時(shí)我的朋友并沒(méi)有反應(yīng)過(guò)來(lái),對(duì)方感覺到深深的失望。

對(duì)Vim有信仰的程序員甚至為自己HHKB的Esc鍍金:

Golden HHKB

Vim有非常多優(yōu)秀的擴(kuò)展:

Bilibili - Vide

Bilibili - Vide

SpaceVim

SpaceVim

由于這些擴(kuò)展顏值太高,我用著如此好用的現(xiàn)代編輯器,都甚至想去學(xué)習(xí)一下Vim,這里有一個(gè)練習(xí)Vim比較棒的入門倉(cāng)庫(kù),想學(xué)習(xí)的各位可以去看一下:

GitHub - dofy/learn-vim: Vim 實(shí)操教程(Learning Vim)Vim practical tutorial.

那么我們可以先來(lái)稍微看一下,Vim有6種基本編輯模式:

普通模式(Normal mode)
插入模式(Insert Mode)
可視模式(Visual Mode)
選擇模式(Select Mode)
命令行模式(Command line Mode)
Ex模式(Ex Mode)

What?總有種感覺,這一定不是我這個(gè)年紀(jì)該承受的傷害,我們還是從基本的實(shí)操來(lái)對(duì)比學(xué)習(xí)Vim吧。

工作場(chǎng)景

由于高熟練度使用Vim才比較瀟灑,在成為一個(gè)成熟的Vimer之前,我建議把我們的“按鍵重復(fù)”及“重復(fù)前延遲”兩個(gè)選項(xiàng)開至最騷,以應(yīng)對(duì)光標(biāo)移動(dòng)需求。

MacOS Setting

指定行

我們?cè)诓榭磮?bào)錯(cuò)信息的時(shí)候,最關(guān)注的就是行號(hào),能夠直接跳到指定行號(hào)debug,實(shí)在是美滋滋,這一點(diǎn)在vim中使用行號(hào) + gg可以做到,在vscode中可以使用Control + G

詞間跳躍

詞間跳越是Vim中做得非常優(yōu)秀的一點(diǎn),其中w可以跳到當(dāng)前詞最后一個(gè)字符之后,e可以跳到當(dāng)前詞最后一個(gè)字符之上,相當(dāng)于vscode中使用option+arrow的操作,但是說(shuō)實(shí)話,無(wú)論是Vim還是Vscode,這一點(diǎn)上做得都不如Webstorm,對(duì)中文的支持不夠友好,這一點(diǎn)可以參見黃玄的博客Vim 與中文輸入法 - 黃玄的博客 | Hux Blog

擴(kuò)大選擇

使用v模式可以進(jìn)行文本的選擇操作,再加上w、e的助力可以達(dá)到擴(kuò)大選擇的作用,當(dāng)然僅限于英文中使用,在中文中常常會(huì)將一句非常長(zhǎng)的話給收進(jìn)來(lái)。

多行編輯

多行編輯是現(xiàn)代編輯器非常出色的一個(gè)功能,在vscode中長(zhǎng)按option再加上點(diǎn)擊即可添加多個(gè)光標(biāo),以達(dá)到多行同時(shí)編輯的目的,在vim中同樣可以做到這一點(diǎn),但是對(duì)列位置有要求(鄙人才疏學(xué)淺,如果有更好的方式請(qǐng)指出),就是通過(guò)塊選擇Control + V再輔以Shift + I的方式進(jìn)行多行注入。

塊選擇

塊選擇最初在我眼里是Vim獨(dú)有的帥氣存在,但其實(shí)在vscode中也不是不可以做到,即運(yùn)用連選+多行編輯的組合,Shift + Option + 鼠標(biāo)點(diǎn)按,這樣的編輯體驗(yàn)非常美好,在我心里實(shí)在是吊打了Vim,沒(méi)有嘗試過(guò)的兄弟請(qǐng)務(wù)必馬上試試。

重構(gòu)

在業(yè)務(wù)中的一個(gè)常見場(chǎng)景是對(duì)變量進(jìn)行重命名,如果是Javascript,由于這門語(yǔ)言的特殊性,雖然vscode已經(jīng)對(duì)其有較好的基于jsdoc的類型支持,但依然不能保證重命名的準(zhǔn)確性,只能夠提供“更改所有匹配項(xiàng)”的功能(順帶一提,ts文件支持重命名功能),并且最好改完后去diff看看有沒(méi)有改壞了什么地方,體驗(yàn)非常差。

這一點(diǎn)我認(rèn)為在vim中表現(xiàn)得更為糟糕,我在學(xué)習(xí)vim的過(guò)程中見到許多Vim大佬都是用grep去跳轉(zhuǎn)到變量定義的,這一點(diǎn)在現(xiàn)在編輯器上基本是都是一個(gè)Command + 鼠標(biāo)點(diǎn)擊就能夠過(guò)去的,這似乎對(duì)編輯者的記憶力要求頗高了。

正則查詢

在正則查找方面Vim支持得挺好的,沒(méi)有什么毛病,但是在書寫正則的過(guò)程中不是實(shí)時(shí)的,并且不支持批量修改,這一點(diǎn)Sublime天生支持,而在vscode中科院通過(guò)Option + Enter開啟,

文件查找

如果你使用過(guò)Webstorm的雙Shift查找,或者是vscode、sublime的Command + P,你就會(huì)覺得vim在面對(duì)大型項(xiàng)目的時(shí)候,對(duì)業(yè)務(wù)的熟練要求是頗高了。

最后

我對(duì)Vim了解不夠多,我覺得能好好寫項(xiàng)目的,自己喜歡的就夠了,雖然我從入門到放棄,但是讓我收獲了一個(gè)瀏覽器利器:

GitHub - philc/vimium: The hacker’s browser.

VM上Vim是改代碼利器,但僅限于雕琢,正常的碼代碼的過(guò)程中我是一定不會(huì)使用Vim的,并且我想問(wèn)一問(wèn)那些Vim大佬,是不是一般不寫中文注釋的……

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

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

  • vim四大模式 插入模式:輸入i/a/o進(jìn)入插入模式 普通模式:進(jìn)去默認(rèn)就是普通模式 命令模式;輸入“:”冒號(hào)進(jìn)入...
    蠟筆小金_933b閱讀 611評(píng)論 1 0
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,356評(píng)論 0 10
  • Vim幾句話介紹Vim是Unix系統(tǒng)上的文本編輯軟件(你該不會(huì)不知道什么是文本編輯軟件吧?。?,在windows上也...
    何必遠(yuǎn)方閱讀 3,329評(píng)論 0 3
  • 作者:Sanchit Gera,原文鏈接:How I learned to love vim 以下是譯文: 我與 ...
    丶Stephen閱讀 605評(píng)論 0 0
  • 引用一個(gè)同事的話!不經(jīng)意看到一句流言“孩子,放下工作養(yǎng)不起你,拿起工作陪不了你",今夜看到Q群上鋪滿對(duì)某年輕逝者惋...
    雷山966羅升閱讀 283評(píng)論 0 1

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