Vim修煉祕籍之語法篇

前言

少年,我看你骨骼精奇,是萬中無一的武學奇才,維護世界和平就靠你了,我這有本祕籍《Vim修煉祕籍》,見與你有緣,就十塊賣給你了!git

若是你是一名 Vimer,那麼恭喜你,你的 Vim 技能立刻要升級了 😈!github

若是你以前不瞭解過 Vim ,那麼也不要緊,本文就當成學英語語法了!vim

好,廢話很少說,祕籍送上。ide

ps: 建議先熟悉一遍 Vim修煉祕籍之命令篇,本祕籍食用更佳post

正文

核心祕訣

Vim 功法之究極總結: (操做次數)+ 操做行爲 + 操做範圍code

下面,我會將此祕訣 親自傳授於你。對象

祕訣解析

先列一些經常使用的 Vim 招式給你瞧瞧,看你是不是傳說的練武奇才:blog

c2w       ——  刪除當前光標後緊鄰的兩個單詞,並轉換爲普通模式
dip       ——  刪除當前光標所處的一段內容
y3f{char} ——  從當前字符,一直複製到第三個 {char} 字符
>G        ——  當前行到結尾,總體縮進一個 <Tab>
v`{mark}  ——  從當前字符,選擇到 {mark} 標記位置
cit       ——  刪除當前光標所處標籤中的內容

若是把招式當作語言,解析其語法,不難發現一個共同點:ip

每一個招式必須包括 ** 謂語(操做行爲) 與 賓語(操做對象)**ci

好,既然有了線索,我這就帶你各個擊破!

謂語(操做行爲)

衆所周知,謂語是 動詞詞性的。

在 Vim 功法中,經常使用的動詞以下:

  1. c

    刪除內容,進入普通模式

  2. d

    刪除

  3. y

    複製

  4. v

    選擇

  5. >,<

    縮進

  6. =

    智能縮進

  7. gu,gU,g~

    改變內容大小寫

賓語(操做對象)

賓語表明的是操做對象,而在 Vim 中,所需操做的對象便是 操做的範圍。

而經常使用的操做範圍命令以下:

  1. w

    從當前位置,到下一個單詞首字母,單詞由特殊字符(".等)做爲間隔

    內容: .main {xxx} , 光標處在字符 m

    招式:caw

    結果:. {xxx}

  2. W

    從當前位置,到下一個單詞首字母,單詞由空格做爲間隔

    內容: .main {xxx} , 光標處在字符 m

    招式:caW

    結果: {xxx}

  3. e

    從當前位置,到本單詞尾字母

  4. ge

    從當前位置到上一個單詞尾字母

  5. b

    1. 一般代替括號中的內容
    2. 上一個單詞首字母
  6. p

    段落 paragraph

  7. s

    句子 sentence

  8. t

    標籤中的內容

    內容: <tag>content</tag> ,光標處在字符 a

    招式: cit

    結果: <tag></tag>

  9. B

    一般代替花括號中的內容

  10. 符號 {) "'<

    表明的就是 該符號中的內容

  11. G,gg

    結尾,開頭

  12. j,k,h,l

    上下左右

  13. /{word}<Enter>

    從當前字符 到下一個word之間的內容

  14. f{char}

    從當前字符到下一個 char 字符之間的內容

  15. `mark

    從當前字符到mark標記 之間的內容

  16. 雙寫動詞,操做範圍默認是當前行

    1. dd 刪除當前行
    2. cc 刪除當前行 並轉換爲普通模式
    3. >> 縮進當前行
    4. v 動詞例外,使用 V 選中當前行。
    5. gU 命令是一種特殊狀況,可用 gUU 來使它做用於當前行。

數詞(操做次數)

假如如今有個任務,讓你刪除兩個單詞,你會怎麼作?

  1. d2w

    刪除兩個單詞

  2. 2dw

    執行兩次刪除單詞的命令

雖然這兩式結果相同,但意義卻有所差異,

數詞靈活多變,可放在 謂語(操做行爲)前,又可放在 賓語(操做對象)前,

  • 放在 謂語前,表明操做次數,
  • 放在 賓語前,表明操做範圍的擴張次數

介詞(修飾範圍)

經常使用的介詞就兩個:i(inside) , a(around)

舉例說明:光標處在字符 c

<main><div class="vim-test">I am Vimer!</div></main>

分別操做:

  • dat

    結果:<main></main>

  • dit

    結果: <main><div class="vim-test"></div></main>

顧名思義,i 就是內部的內容,a 就是連同包裹的內容 一塊兒幹掉。

招式實戰

我已經教授了你 Vim 祕籍的基本功 :(操做次數)+ 操做行爲 + 操做範圍

如今,利用你所學,來實戰鞏固吧。

  1. 將下面標籤中的內容修改了: I am Vimer! (光標所處 字符 c )

    <div class="vim-test">you are Bimer!</div>

  2. 修改下面字符串爲 https://tomotoes.com !(光標所處 第一個 w 字符)

    https://www.tomotoes.com

  3. 將文件 全部內容格式化,寫出 你認爲的命令

  4. 將下面字符串改成 I am Vimer (光標所處 I 字符)

    I am VIMER

  5. 將下面字符串的每一個字符替換爲 '!'

    I love github and juejin

等待你的評論答案。

結束語

好的功夫是練出來的,請你之後務必勤加練習。

好了,Vim 語法先告一段落,但願本文能給你帶來幫助。

若是你想了解 Vim 其餘方面 如:Ex 命令,寄存器等,請關注個人我的博客

相關文章
相關標籤/搜索