像打詠春一樣使用Vim(Vim零插件提速策略)

圖片源自網(wǎng)絡(luò)

“我學(xué)功夫,從15歲開始,每天揮刀500下,這個(gè)數(shù)管住了我。從今天起,我以你為約束?!?/strong>

--電影《師傅》

看過甄子丹演的《葉問》三部曲,陳國坤演的《李小龍傳奇》最喜歡廖凡演的《師傅》(臺(tái)詞精煉,耐人尋味)。詠春拳給我的印象是招數(shù)簡單實(shí)用,攻防兼?zhèn)洌R运俣戎苿?。這跟 Vim 的哲學(xué)有異曲同工之妙。甚至覺得有時(shí)候用 Vim 編程感覺像練功,沒有 IDE 那樣繁多的提示和功能,純粹的寫代碼。這里總結(jié)點(diǎn)兒我平時(shí)使用 Vim 的竅門,讓你用起 Vim 來像詠春一樣快(快速移動(dòng)光標(biāo)),狠(瘋狂碼字),準(zhǔn)(準(zhǔn)確刪除/修改)

  • Part1:手指不要輕易離開主鍵區(qū)
  • Part2:讓光標(biāo)跟上眼睛
  • Part3:Vim 語熟于心
  • Part4:常用 Vim 語實(shí)戰(zhàn)(會(huì)持續(xù)更新)

Part1:手指不要輕易離開主健區(qū)

鍵盤上的主鍵區(qū)(圖片源于網(wǎng)絡(luò))

詠春:中門論 ─人體中門最弱,是攻擊目標(biāo),也是重點(diǎn)守護(hù)的地方。

要提高使用Vim的效率,在保證功能的情況下,盡量縮小打字的范圍,守護(hù)我們的“中門”(主鍵區(qū))。這里有幾點(diǎn)建議:

  1. 不用 方向鍵,用 <code>hjkl</code> (入門基本素養(yǎng))
  2. 不用 <code>Esc</code>,用 <code>control + [</code>
  3. 不用 <code>Back Space</code>,用 <code>x/D/c/C</code> 等
  4. 把鍵盤上的 <code>Cap Lock</code> 換成 <code>Control</code>
  5. 常用<code>ctrl + p</code>或<code> ctrl + n</code>補(bǔ)全輸入
  6. 常用<code>.</code>(英文句號(hào))重復(fù)上一個(gè)命令
  7. 盲打(進(jìn)階必備素養(yǎng))
  8. 用<code>set nu</code>和 <code>set rnu</code> 讓行數(shù)行距盡收眼底:


    :set nu :set rnu

    <br />

Part2:讓光標(biāo)跟上眼睛

效果 命令
光標(biāo)置頂 <code>gg</code>
光標(biāo)至底 <code>G </code>
光標(biāo)至頁頂 <code>ctrl + h</code>
光標(biāo)至頁底 <code>ctrl + m</code>
光標(biāo)至頁中 <code>ctrl + l</code>
光標(biāo)至句首 <code>ctrl + ^</code>
光標(biāo)至句尾 <code>ctrl + $</code>
往下翻頁 <code>ctrl + d</code>
往上翻頁 <code>ctrl + p</code>
瞬移光標(biāo)

<br />

Part3:Vim 語熟于心

Vim 語法結(jié)構(gòu):[數(shù)字]+ 動(dòng)詞 + 介詞 + 名詞/符號(hào)

  • 數(shù)字表示重復(fù)命令的次數(shù),省略則表示只執(zhí)行一次。
  • 語法結(jié)構(gòu)必須嚴(yán)格遵循:[數(shù)字] + 動(dòng)詞 + 介詞 + 名詞/符號(hào)的順序使用,否則可能沒有意義。
  • 語法是死的,語言是活的,結(jié)合具體的情況使用即可使事半功倍。

動(dòng)詞

效果 命令
刪除(delete): <code>d</code>
修改(change): <code>c</code>
復(fù)制(yank): <code>y</code>
選取(visual select): <code>v</code>
  • 替換(replace)命令是 <code>r</code> 不支持 Vim 語法結(jié)構(gòu),修改錯(cuò)別責(zé)的時(shí)候常用,格式是 <code>r</code> + 正確的字母/字符

介詞

效果 命令
在...之內(nèi)(inner) <code>i</code>
在...周圍(around) <code>a</code>
到...位置前(to) <code>t</code>
到...位置上(forward) <code>f</code>
  • 注意:<code>i</code>/<code>a</code>/<code>f</code>在當(dāng)動(dòng)詞使用的時(shí)候分別表示 插入(insert),增補(bǔ)(append),查詢(find),然而 <code>t</code> 只有作介詞(表示 to) 和符號(hào)(表示 tag) 的時(shí)候才有意義,請不要混淆了。

名詞

效果 命令
一個(gè)單詞(word) <code>w</code>
一個(gè)句子(sentence) <code>s</code>
一個(gè)段落(paragraph) <code>p</code>

常用符號(hào)

效果 命令
逗號(hào) <code>,</code>
句號(hào) <code>.</code>
分號(hào) <code>;</code>
一個(gè)標(biāo)簽(tag) <code>t</code>
圓括號(hào) <code>(</code> 或 <code>)</code>
方括號(hào) <code>[</code>或 <code>]</code>
花括號(hào) <code>{</code>或 <code>}</code>

<br />

Part4:常用 Vim 語實(shí)戰(zhàn)(會(huì)持續(xù)更新)

1. 單詞/段落

效果 命令 記憶竅門
刪除一個(gè)單詞 <code>daw</code> delete a word
替換一個(gè)單詞 <code>caw</code> change a word
選取一個(gè)單詞 <code>vaw</code> visual-select a word
刪除一個(gè)段落 <code>dap</code> delete a paragraph
替換一個(gè)段落 <code>cap</code> change a paragraph
選取一個(gè)段落 <code>vap</code> visual-select a paragraph
  1. delete a word


    daw 命令效果
  2. change a word


    caw 命令效果
  3. visual-select a word


    vaw 命令效果
  4. delete a paragraph


    dap 命令效果
  5. change a paragraph


    cap 命令效果

6.visual-select a paragraph


vap 命令效果

想一想:如果把命令中的 <code>a</code> 換成 <code>i</code> 會(huì)有什么不同呢?

2. 程序員常用 Vim 語

命令 效果 記憶竅門
清除括號(hào)里的內(nèi)容 <code>di(/di[/di{</code> 或 <code>di)/di]/di}</code> delete inside ()/[]/{}
清除整個(gè)括號(hào) <code>da(/da[/da{</code>或 <code>da)/da]/da}</code> delete around ()/[]/{}
清除標(biāo)簽里面的內(nèi)容 <code>dit</code> delete in tag
清除整個(gè)標(biāo)簽的內(nèi)容 <code>dat</code> delete all tag
  1. delete inner bracket/tag


    清除括號(hào)/標(biāo)簽里的內(nèi)容
  2. delete a bracket/tag


    清除整個(gè)括號(hào)/標(biāo)簽

想一想:如果要替換括號(hào)/標(biāo)簽里面的內(nèi)容或者替換整個(gè)括號(hào)/標(biāo)簽應(yīng)該如何做呢?

提速策略

仔細(xì)觀看上面的實(shí)例,你也許會(huì)發(fā)現(xiàn),無論在單詞/段落/標(biāo)簽的任意一個(gè)位置(首部,中間,結(jié)尾)以上命令均可使用。這意味著你可以放心的使用Part1 中的第六條建議:常用<code>.</code>(英文句號(hào))重復(fù)執(zhí)行命令。接下來,你便可以用點(diǎn)點(diǎn)點(diǎn),來刪刪刪,改改改,有沒有像打詠春拳一樣的快感?

3. 句子

|命令|效果|
|:-:|:-:|:-:|
|向后清除到字母/符號(hào)的內(nèi)容|<code>df字母/符號(hào)</code>|
|向前清除到字母/符號(hào)的內(nèi)容|<code>dF字母/符號(hào)</code>|
|向前清除到字母/符號(hào)之前的內(nèi)容|<code>dT字母/符號(hào)</code>|
|向后清除到字母/符號(hào)之前的內(nèi)容|<code>dt字母/符號(hào)</code>|

修改句子效果圖

想一想:如果把命令中的 <code>d</code> 替換成 <code>v</code> 或者 <code>c</code> 會(huì)有什么效果呢?

當(dāng)然,在修改句子的時(shí)候就不能在任意的地方用 <code>.</code>(英文句號(hào))來重復(fù)修改內(nèi)容了。但是我們依然可以使用 <code>.</code> 來快速到達(dá)指定的位置。

希望這篇文章對于喜歡 Vim 的朋友有幫助,這篇文章只包括了 Vim 從初級到進(jìn)階的一部分技巧,大家若有任何意見或建議請多多指教。都看到這兒了,給大家發(fā)個(gè)福利《Vim 實(shí)用技巧》高清英文版PDF(中文版我沒找著,不嫌棄就收了順便練練英文吧)感謝大家聽我嘮叨哈哈,里面有很多實(shí)用有趣的實(shí)例。下載不了的話可以簡信我。

P.S. 特別感謝:
和我一起用 Vim 玩耍的小伙伴 Seven
song4 和他的這篇一起來說Vim語
Drew Neil 的《Vim 實(shí)用技巧》

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

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

  • 下面是一篇舊文,大多是一些已有知識(shí)的整理,并不太成熟。歡迎關(guān)注專欄 space-vim , 有空我會(huì)以 Vim 自...
    liuchengxu閱讀 727評論 0 8
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,606評論 9 468
  • 這篇文章是手冊的中文譯版整理而來(英文看著太慢了,感謝前人鋪路Orz...),vim的markdown插件和實(shí)時(shí)預(yù)...
    Himryang閱讀 7,379評論 0 20
  • 作者:李平武出版社:外語教學(xué)與研究出版社版本:2002年11月第1版,2013年4月第9次印刷來源:微盤下載mob...
    馬文Marvin閱讀 14,555評論 5 85
  • 引爆點(diǎn),即引爆一場流行,引爆一場消費(fèi)革命。 書中從米國獨(dú)立戰(zhàn)爭的起因的一場小事件,通過聯(lián)系員的快速傳播,引爆了改變...
    ShineLau閱讀 640評論 1 1

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