VIM基礎知識整理(附思惟導圖)

  這是當時初學VIM後作的一個思惟導圖,圖片稍大,因此從freemind導出了html文本po在下面;圖片在最下方,放大可清晰瀏覽。html

 

VIMshell

  • 普通模式
    • 普通編輯命令
      • 功能:瀏覽,普通編輯vim

        x:刪除光標所在字符  (=d+h)spa

        X:刪除光標前一個字符  (=d+l)命令行

        D:刪除當前行光標位置到行尾的字符  (=d+$)htm

        dd:刪除光標所在的行對象

        J:刪除光標所在行的換行符blog

        p:在光標後粘貼圖片

        P:在光標前粘貼,粘貼行時,p是粘貼在光標的下方,P粘貼在光標上方字符串

        xp:交換兩個字符的位置

        ddp:交換兩行的位置

        u:撤銷前一個操做

        Ctrl+r:恢復前一個操做,能夠配合數字n進行n次批量操做;如3x,則刪除當前光標及其後兩個字符。

        注1:刪除命令執行後,刪除的內容保存在緩衝區。

        注2:粘貼命令調用緩衝區內最近的內容。

    • 控制命令
      • 字符級命令
        • h或鍵盤向左鍵:光標左移一個字符
        • l或鍵盤向右鍵:光標右移一個字符
        • j或鍵盤向下鍵:光標下移一行
        • k或鍵盤向上鍵:光標上移一行
        • 能夠配合數字n進行n次批量操做
      • 單詞級命令
        • w:下一個單詞的詞首

          W:空白字符分割的下詞詞首

          b:上一個單詞的詞首

          B:空白字符分割的上詞詞首

          e:下一個單詞的詞末

          E:空白字符分割的下詞詞末

          ge:上一個單詞的詞末

          GE:空白字符分割的上詞詞末

          注3:光標在單詞內時,b/e命令的結果是移動到本單詞的詞首/詞末

          注4:命令前+數字n,執行n次命令

      • 行級命令
        • $:當前行行尾
        • 0(數字0):當前行的第一個字符
        • ^:當前行的第一個非空字符
        • 移動到指定字符
          • f+單個字符:在本行內向右移動到指定字符
          • F+單個字符:在本行內向左移動到指定字符
          • t+單個字符:在本行內向右移動到指定字符的前一個字符
          • T+單個字符:在本行內向左移動到指定字符的前一個字符
          • 一樣能夠在命令前加數字n來定義移動到行唄第幾個指定字符
          • 使用「;」來查找下一個,「,」來查找上一個
        • %:在「( )」、「[ ]」、「{ }」類符號的首尾間切換
        • 1G或gg:文本第一行行首
        • nG:移動到第n行行首
        • n%:按百分比近似定位到某行
        • G:文本末行行首
      • 屏幕級命令
        • H:屏幕頂部行首
        • M:屏幕中央行首
        • L:屏幕底部行首
        • zt:使光標所在位置移動到屏幕的頂部(全部內容作位移)
        • zz:使光標所在位置移動到屏幕的中央(全部內容作位移)
        • zb:使光標所在位置移動到屏幕的頂部(全部內容作位移)
        • ctrl+b:上移一屏
        • ctrl+f:下移一屏
        • ctrl+u:上移半屏
        • ctrl+d:下移半屏
        • ctrl+e:上滾一行
        • ctrl+y:下滾一行
      • 提示信息
        • Ctrl+g:顯示當前行的位置信息(第幾行,相對整個文本行數的百分比)(當次生效)

      • 保存並退出VIM:ZZ
    • 替換命令
      • r:替換當前字符

        R:(進入replace模式)持續替換光標所在字符,直到使用ESC退出替換模式。

    • 標記mark
      • m+[a~z] :在當前光標作標記,如ma
      • `+(mark):光標返回指定標記,如`a,則光標返回標記a的位置
      • ‘+(mark):光標返回指定標記所在的行,如’a,則光標返回到標記a所在行首
      • ‘:回到跳轉前的位置
      • 「:跳轉到最後編輯的位置
      • 【:最後修改的開始位置
      • 】:最後修改的結束位置
      • 一些特定的標記能夠跳轉到其餘文本,具體狀況之後再作了解
  • 「.」命令:重複上一次操做
    • 例:

      1:/word1  \\查找單詞word1

      2:cw word2  \\把word1修改成word2

      3:n  \\下一個匹配點

      4:.  \\重複步驟2

      「.」命令重複的對象:

         普通編輯命令(普通模式下的命令),組合命令(操做符+動做);

            不能重複命令行下的命令。

  • 多線操做
    • vim file1 file2 file3...:

      可在文本間切換編輯。

          :n:進入下一文本

          :N:進入上一文本

  • 命令行模式
    • 設置命令「:」
      • 保存、退出

        • :+w :保存文本,不退出vim

          :+wq:保存並退出vim(無論有否修改,文件修改時間都會更新)

          :+x:如有修改,則保存並退出vim,若無修改,則直接退出vim

          :+q :未對文本進行修改時,可以使用該命令直接退出vim

          :+q!:強制退出vim(放棄修改)

          :+e!:放棄修改並從新打開該文本

        環境設定

        • :+set nu[mber]:顯示行號

          :+set nonu[mber]:隱藏行號

          :+set ruler:顯示光標位置信息

          :+set noruler:隱藏光標位置信息

          :+set hlsearch:高亮匹配

          :+set nohlsearch:取消高亮匹配

          :+nohlsearch:臨時取消高亮(只取消一次查詢的高亮)

          :+set ic或ignorecase):忽略大小寫

          :+set noic(或noignorecase):區分大小寫

          當前命令忽略大小寫:查找命令+\c,如:/test\c,查找test,忽略大小寫

          :+set incsearch:在輸入字符串過程當中顯示匹配點

          :+set nowrapscan:找到文尾後中止查找

          :+set wrapscan:恢復爲到文尾後自動從頭開始

        替換(查找而後替換)

        • :s/old/new/ :當前行的第一個old替換爲new(old和new能夠是字符也能夠是字符串)

          :x,ys/old/new/g:x行到y行的全部old替換爲new(注意末尾的參數g,不加參數g則只替換每行的第一個old)

                  參數「x」替換爲「.」,則從當前行開始

                  參數「y」替換爲「$」,則到最後一行爲止

          :%s/old/new/gc:全局替換,替換文本中全部old爲new(注意最後的參數「c」,即爲每次替換均須要確認)

        :+e filename:vim下打開指定文本

        :+!command:vim下執行某shell命令

        :marks:查看已有的標記

        :delmarks 標記名:刪除某標記

    • 查找命令
      • /+字符或字符串:在文本內從光標位置向下查找指定字符/字符串

        ?+字符或字符串:反向查找

        查找命令執行後,可以使用:

                n:查找下一個

                N:查找上一個

               (對於?查找,移動方向也相應變化)

                n/N命令前也可使用數字n來查第n個

    • 退回普通模式:ESC
  • 可視模式
    • 可視模式的功能是選擇區域,選擇區域後的其餘操做參見其餘模式!!

      v:字符選擇,可進行字符的逐個選擇;

              選中從進入可視模式時的光標位置到當前光標位置的內容,光標控制能夠參見普通模式的控制命令以提升效率。

      V:按行選擇,參照字符選擇。

      Ctrl+v:列塊選擇

      • 選擇屏幕的一個矩形區域;以進入可視模式時的光標位置爲一角,以光標當前位置爲對角。光標控制能夠參見普通模式的控制命令以提升效率。

        o:把光標移動到矩形的對角

        O:把光標移動到水平位置的另外一角

  • insert模式
    • i:在光標前插入字符

      I:在行首插入字符

      a:在光標後插入字符

      A:在行尾插入字符

      o:在光標下發插入空行

      O:在光標上方插入空行

      s:刪除光標位置字符,並進入insert模式  (=c+l)

      S:刪除光標所在行,並進入insert模式  (=c+c)

      C:刪除光標位置到行尾的字符,並進入insert模式  (=c+$)

    • 退回普通模式:ESC

  • 操做符
    • 三種操做符

      • d:delete  把選擇的內容存入寄存器。

        c:change  把選擇的內容存入寄存器,使用新的內容覆蓋原內容。

        y:copy  把選中的內容拷貝到寄存器中。

        •   yw:拷貝一個單詞    

          ynw:拷貝n個單詞

          ye: 拷貝一個單詞,不包括單詞結尾空格。

          yne:拷貝n個單詞。

          yy:拷貝一行

          nyy:浮躁從光標所在行起的n行,注意n在最前面。

          y$:拷貝從當前位置到行尾

          yG:拷貝從當前位置到文尾

        三種操做符存入寄存器的內容都適用於p/P粘貼命令。

        三種操做符與普通命令組合的思想一致!!!

    • 操做符+動做
      • 動做:普通模式下的控制命令;動做前有操做符時,動做的做用是覆蓋一段文本;動做所走過的軌跡即操做符將要操做的對象。

        如:d+w,結果是刪除光標位置(含)到下以單詞首(不含)直接的字符。

    • 可視模式+操做符
      • 在可視模式下選擇要操做的區域,而後使用操做符進行操做
    • 操做符+文本對象
      • daw:刪除一個單詞,包含單詞的邊界(空格)。

        da【:刪除[ ]整個塊,包含符號自己;

        da<;da(;da{;da";da'同理

        diw:刪除一個單詞,不含單詞的邊界。

        di【:刪除[ ]內的字符,不含符號自己;

        di<;di(;di{;di";di'同理

        常見文本對象:

                ap 一個段落;  aW 一個字符串;as 一個句子; at 一個HTML標籤

VIM初級知識

相關文章
相關標籤/搜索