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


  這是當時初學VIM后做的一個思維導圖,圖片稍大,所以從freemind導出了html文本po在下面;圖片在最下方,放大可清晰瀏覽。

 

VIM

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

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

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

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

        dd:刪除光標所在的行

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

        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初級知識


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM