VIM 命令大全

來源:互聯網
上載者:User
VIM 命令大全

在vim官網找到的一些命令的合集,自己整理了一下,然後補充了一些例子和說明,喜歡VIM編輯器的童鞋們請收藏。
|h| N h 左 (亦: CTRL-H、 或 鍵) 也可以移動n列,例如:12h
以這個例子說明一下 |h| 代表操作符說明 N 代表數字,h 是操作符. 例子: 12h
後續文檔都是按照這個格式閱讀,你很快就會掌握這些命令,怎樣使用.
文檔中的說明已經很清晰了,有些會補充一些例子,其他的自己邊看邊操作
這樣學習起來會很快 VIM 中左右動作

|h|     N  h            左 (亦: CTRL-H、<BS> 或 <Left> 鍵)  也可以移動n列,例如:12h|l|     N  l            右 (亦: <Space> 或 <Right> 鍵) l 向左移動一列, 12l 向左移動 12列|0|        0            至本行第一個字元 (亦: <Home> 鍵)|^|        ^            至本行第一個非空白字元|$|     N  $            至本行 (加上 N - 1 後續行) 最後一個字元 (亦: <End> 鍵)|g0|       g0           至螢幕行第一個字元 (當行迴繞時和 "0" 不同)|g^|       g^           至螢幕行第一個非空白字元 (當行迴繞時和 "^" 不同)|g$|    N  g$           至螢幕行最後一個字元 (當行迴繞時和 "$" 不同)|gm|       gm           至螢幕行中點迴繞行: 很長的一行顯示成兩行|bar|   N  |            至第 N 列 (預設: 1)   輸入:  數字 + | (豎線,跳轉到列數)|f|     N  f{char}      至右邊第 N 次出現 {char} 之處 (find) 例如: 2ft|F|     N  F{char}      至左邊第 N 次出現 {char} 之處 (Find)例如: 4Fh|t|     N  t{char}      至右邊第 N 次出現 {char} 之前 (till) 例如:2tf|T|     N  T{char}      至左邊第 N 次出現 {char} 之前 (Till) 例如:2Th|;|     N  ;            重複上次 “f”、“F”、“t” 或 “T” 命令 N 次例如: 2;|,|     N  ,            以相反方向重複上次 “f”、“F”、“t” 或 “T” 命令 N 次例如:2,
上下操作
|k|     N  k            上移 N 行 (亦: CTRL-P 和 <Up>)向上移動多行: 10k|j|     N  j            下移 N 行 (亦: CTRL-J、CTRL-N、<NL> 和 <Down>)  向下移動多行:12j|-|     N  -            上移 N 行,至第一個非空白字元|+|     N  +            下移 N 行,至第一個非空白字元 (亦: CTRL-M 和 <CR>)|_|     N  _            下移 N - 1 行,至第一個非空白字元|G|     N  G            至第 N 行 (預設: 末行) 第一個非空白字元|gg|    N  gg           至第 N 行 (預設: 首行) 第一個非空白字元|N%|    N  %            至全檔案行數百分之 N 處;必須給出 N,否則是 |%| 命令|gk|    N  gk           上移 N 螢幕行 (迴繞行時不同於 “k”)迴繞行: 很長的一行顯示成兩行|gj|    N  gj           下移 N 螢幕行 (迴繞行時不同於 "j")
螢幕滾動
|CTRL-e|        N  CTRL-e       視窗下滾 N 行 (預設: 1)        (Extra)|CTRL-d|        N  CTRL-d       視窗下滾 N 行 (預設: 1/2 視窗) (Downwards)|CTRL-f|        N  CTRL-f       視窗下滾 N 頁                  (Forwards)|CTRL-u|        N  CTRL-y       視窗上滾 N 行 (預設: 1)|CTRL-u|        N  CTRL-u       視窗上滾 N 行 (預設: 1/2 視窗) (Upwards)|CTRL-b|        N  CTRL-b       視窗上滾 N 頁                  (Backwards)|z<CR>|            z<CR> 或 zt  重畫,當前行置視窗頂端|z.|               z.    或 zz  重畫,當前行置視窗正中|z-|               z-    或 zb  重畫,當前行置視窗底端以下僅當 ‘wrap’ 選項關閉時生效:  wrap 是行太長時,顯示兩行.|zh|            N  zh           螢幕右滾 N 個字元|zl|            N  zl           螢幕左滾 N 個字元|zH|            N  zH           螢幕右滾半個屏寬|zL|            N  zL           螢幕左滾半個屏寬
文字物件動作
|w|     N  w            向前 (正向,下同) N 個單詞  (word) |W|     N  W            向前 N 個空白隔開的字串 |WORD|    (WORD)|e|     N  e            向前至第 N 個單詞詞尾            (end)|E|     N  E            向前至第 N 個空白隔開的字串 |WORD| 的詞尾 (End)|b|     N  b            向後 (反向,下同) N 個單詞                (backward)|B|     N  B            向後至第 N 個空白隔開的字串 |WORD| 的詞尾 (Backward)|ge|    N  ge           向後至第 N 個單詞詞尾|gE|    N  gE           向後至第 N 個空白隔開的字串 |WORD| 的詞尾|)|     N  )            向前 N 個句子|(|     N  (            向後 N 個句子|}|     N  }            向前 N 個段落|{|     N  {            向後 N 個段落|]]|    N  ]]           向前 N 個小節,置於小節的開始|[[|    N  [[           向後 N 個小節,置於小節的開始|][|    N  ][           向前 N 個小節,置於小節的末尾|[]|    N  []           向後 N 個小節,置於小節的末尾|[(|    N  [(           向後至第 N 個未閉合的 '(' 注意: 這個游標在)括弧處使用|[{|    N  [{           向後至第 N 個未閉合的 '{'注意: 這個游標在}括弧處使用|[m|    N  [m           向後至第 N 個方法 (method) 的開始 (用於 Java)|[M|    N  [M           向後至第 N 個方法的結束 (Method)  (用於 Java)|])|    N  ])           向前至第 N 個未閉合的 ')'注意: 這個游標在(括弧處使用|]}|    N  ]}           向前至第 N 個未閉合的 '}'注意: 這個游標在{括弧處使用|]m|    N  ]m           向前至第 N 個方法 (method) 的開始 (用於 Java)|]M|    N  ]M           向前至第 N 個方法的結束 (Method)  (用於 Java)|[#|    N  [#           向後至第 N 個未閉合的 "#if" 或 "#else"|]#|    N  ]#           向前至第 N 個未閉合的 "#else" 或 "#endif"|[star| N  [*           向後至第 N 個注釋的開始 "/*"|]star| N  ]*           向前至第 N 個注釋的結束 "*/"
文字物件 (僅適用於可視模式或在操作符後)
|v_aw|     N  aw        選擇 "一個單詞"                   (a word)|v_iw|     N  iw        選擇 "內含單詞"                   (inner word)|v_aW|     N  aW        選擇 "一個字串"                   (WORD)|v_iW|     N  iW        選擇 "內含字串"|v_as|     N  as        選擇 "一個句子"                   (sentence)|v_is|     N  is        選擇 "內含句子"|v_ap|     N  ap        選擇 "一個段落"                   (paragraph)|v_ip|     N  ip        選擇 "內含段落"|v_ab|     N  ab        選擇 "一個塊" (從 "[(" 至 "])")   (block)|v_ib|     N  ib        選擇 "內含塊" (從 "[(" 到 "])")|v_aB|     N  aB        選擇 "一個大塊" (從 "[{" 到 "]}") (Block)|v_iB|     N  iB        選擇 "內含大塊" (從 "[{" 到 "]}")|v_a>|     N  a>        選擇 "一個 <> 塊"|v_i>|     N  i>        選擇 "內含 <> 塊"|v_at|     N  at        選擇 "一個標籤塊" (從 <aaa> 到 </aaa>) (tag)|v_it|     N  it        選擇 "內含標籤塊" (從 <aaa> 到 </aaa>)|v_a'|     N  a'        選擇 "一個單引號字串"|v_i'|     N  i'        選擇 "內含單引號字串"|v_aquote| N  a"        選擇 "一個雙引號字串"|v_iquote| N  i"        選擇 "內含雙引號字串"|v_a`|     N  a`        選擇 "一個反引號字串"|v_i`|     N  i`        選擇 "內含反引號字串"
插入模式鍵
|insert-index|  插入模式命令的索引,以字母順序排列離開插入模式:|i_<Esc>|       <Esc>             結束插入模式,回到普通模式|i_CTRL-C|      CTRL-C            同 <Esc>,但不使用縮寫|i_CTRL-O|      CTRL-O {command}  執行命令 {command} 並回到插入模式移動:|i_<Up>|        游標鍵            左/右/上/下 移動游標|i_<S-Left>|    shift-left/right  左/右 移動一個單詞|i_<S-Up>|      shift-up/down     後/前 移動一個滿屏|i_<End>|       <End>             游標至本行的末字元之後|i_<Home>|      <Home>            游標至本行的首字元之上
插入文本
|a|     N  a    在游標後添加文本 (N 次)|A|     N  A    在行末添加文本 (N 次)|i|     N  i    在游標前插入文本 (N 次) (亦: <Insert>)|I|     N  I    在當前行的第一個非空白字元前插入文本 (N 次)|gI|    N  gI   在第一欄中插入文本 (N 次)|o|     N  o    在當前行下方開始新行,添加文本 (N 次)|O|     N  O    在當前行上方開始新行,添加文本 (N 次)|:startinsert|  :star[tinsert][!]   開始插入模式,當使用 [!] 時添加文本|:startreplace| :startr[eplace][!]  開始替換模式,當使用 [!] 時從行末開始在可視列塊模式下:|v_b_I|    I    在所有選中的行之前插入相同的文本|v_b_A|    A    在所有選中的行之後添加相同的文本
刪除文本
|x|     N  x            刪除游標之下及之後的 N 個字元|<Del>| N  <Del>        刪除游標之下及之後的 N 個字元|X|     N  X            刪除游標之前的 N 個字元|d|     N  d{motion}    刪除動作 {motion} 覆蓋的文本 例如:dw 刪除一個單詞|v_d|      {visual}d    刪除高亮的文本|dd|    N  dd           刪除 N 行|D|     N  D            刪除至行尾 (及 N - 1 後續行)|J|     N  J            串連 N - 1 行 (刪除 <EOL>)|v_J|      {visual}J    串連高亮的行|gJ|    N  gJ           同 "J",但不插入空格|v_gJ|     {visual}gJ   同 "{visual}J",但不插入空格|:d|    :[range]d [x]   刪除範圍 [range] 覆蓋的行 [存入寄存器 x]
撤銷/重做命令
|u|       N  u          撤銷最近的 N 此改動|CTRL-R|  N  CTRL-R     重做最近的 N 個被撤銷的改動|U|          U          恢複最近被改動的行
複製與移動文本
|quote|   "{char}       在接下來的刪除、抽出或放置命令中使用寄存器 {char}|:reg|    :reg          顯示所有寄存器的內容|:reg|    :reg {arg}    顯示寄存器 {arg} 的內容|y|       N  y{motion}  將動作 {motion} 覆蓋的文本抽出至一個寄存器|v_y|        {visual}y  將高亮的文本抽出至一個寄存器|yy|      N  yy         抽出 N 行至寄存器 人話:複製一行或多行|Y|       N  Y          抽出 N 行至寄存器人話:複製一行或多行|p|       N  p      將一個寄存器的內容放置在游標位置後 (N 次) 人話:粘貼|P|       N  P          將一個寄存器的內容放置在游標位置前 (N 次)|]p|      N  ]p         同 p,但調整當前行的縮排|[p|      N  [p         同 P,但調整當前行的縮排|gp|      N  gp         同 p,但將游標留在新文本之後|gP|      N  gP         同 P,但將游標留在新文本之後
重複命令
|.|        N  .         重複最近一次改動 (將計數改為 N)|q|           q{a-z}    記錄鍵入的字元,存入寄存器 {a-z}|q|           q{A-Z}    記錄鍵入的字元,添加進寄存器 {a-z}|q|           q         終止記錄|@|        N  @{a-z}    執行寄存器 {a-z} 的內容 (N 次)|@@|       N  @@        重複上次的 @{a-z} 操作 (N 次)|:@|       :@{a-z}      將寄存器 {a-z} 的內容當作 Ex 命令來執行|:@@|      :@@          重複上次的 :@{a-z} 操作|:g|       :[range]g[lobal]/{pattern}/[cmd]    對 [range] 內所有匹配 {pattern} 的行執行    Ex 命令 [cmd] (預設: ":p")|:g|       :[range]g[lobal]!/{pattern}/[cmd]    對 [range] 內所有_不_匹配 {pattern} 的行執行    Ex 命令 [cmd] (預設: ":p")|:so|      :so[urce] {file} 從檔案 {file} 讀入 Ex 命令|:so|      :so[urce]! {file} 從檔案 {file} 讀入 Vim 命令|:sl|      :sl[eep] [sec] 在 [sec] 秒鐘內任何事也不做|gs|       N  gs        睡 N 秒 (goto sleep)
可視模式
|visual-index|  可視模式命令列表。|v|        v            以字元方式開始高亮             }  移動游標或使用|V|        V            以行方式開始高亮               }  操作符來作用於|CTRL-V|   CTRL-V       以列塊方式開始高亮             }  高亮的文本|v_o|      o            交換高亮地區的開始處和游標位置|gv|       gv           使用上一次的可視地區開始高亮|v_v|      v            以字元方式開始高亮或停止高亮|v_V|      V            以行方式開始高亮或停止高亮|v_CTRL-V| CTRL-V       以列塊方式開始高亮或停止高亮
寫入和退出
|:w|      :[range]w[rite][!]            寫入當前檔案|:w_f|    :[range]w[rite] {file}        寫入至檔案 {file},除非其已經存在|:w_f|    :[range]w[rite]! {file}       寫入至檔案 {file}。覆蓋已存在的檔案|:w_a|    :[range]w[rite][!] >>         添加至當前檔案|:w_a|    :[range]w[rite][!] >> {file}  添加至檔案 {file}|:w_c|    :[range]w[rite] !{cmd}        執行命令 {cmd},以 [range] 限定的行作                                           為標準輸入|:up|     :[range]up[date][!]           如果當前檔案被改動則寫入|:wall|   :wa[ll][!]                    寫入所有被改動的緩衝區|:q|      :q[uit]               退出當前緩衝區,除非已經做了改動。如果沒有其它                                   非協助的緩衝區,退出 Vim|:q|      :q[uit]!              強制退出當前緩衝區,放棄所有的改動。如果沒有其                                   它非協助的緩衝區,退出 Vim|:qa|     :qa[ll]               退出 Vim,除非作了改動|:qa|     :qa[ll]!              退出 Vim,放棄所有改動|:cq|     :cq                   退出,不寫入檔案並返回錯誤碼|:wq|     :wq[!]                寫入當前檔案並退出|:wq|     :wq[!] {file}         寫入檔案 {file} 並退出|:xit|    :x[it][!] [file]      同 ":wq" 但是僅當有改動時寫入|ZZ|         ZZ                 同 ":x"|ZQ|         ZQ                 同 ":q!"|:xall|   :xa[ll][!]  或 :wqall[!]                                寫入所有改動的緩衝區並退出|:stop|   :st[op][!]            掛起 Vim 或開始一個新 shell。如果置位了 'aw'                                   選項並沒有給出 [!] 則寫入緩衝區|CTRL-Z|     CTRL-Z             同 ":stop"
摺疊
|'foldmethod'|  set foldmethod=manual   手動摺疊                set foldmethod=indent   按照縮排摺疊                set foldmethod=expr     按照運算式 'foldexpr' 摺疊                set foldmethod=syntax   按照文法地區摺疊                set foldmethod=marker   按照標誌 'foldmarker' 摺疊|zf|            zf{motion}              操作符: 手動定義一個摺疊    (fold)|:fold|         :{range}fold            將範圍 {range} 包括的行定義為一個摺疊|zd|            zd                      刪除游標下的一個摺疊        (delete)|zD|            zD                      刪除游標下的所有摺疊        (Delete)|zo|            zo                      開啟游標下的摺疊            (open)|zO|            zO                      開啟游標下的所有摺疊        (Open)|zc|            zc                      關閉游標下的一個摺疊        (close)|zC|            zC                      關閉游標下的所有摺疊        (Close)|zm|            zm                      折起更多: 減少 'foldlevel'  (more)|zM|            zM                      關閉所有摺疊: 置 'foldlevel' 為 0|zr|            zr                      減少摺疊: 增加 'foldlevel'  (reduce)|zR|            zR                      開啟所有摺疊: 置 'foldlevel' 為最大|zn|            zn                      不摺疊: 複位 'foldenable'   (none)|zN|            zN                      正常摺疊: 置位 'foldenable' (Normal)|zi|            zi                      反轉 'foldenable'           (invert)
多視窗命令
|CTRL-W_s|      CTRL-W s  或  :split    將視窗分割成兩部分          (split)|:split_f|      :split {file}           分隔視窗並在其中一個編輯 {file}|:vsplit|       :vsplit {file}          同上,但垂直分割|:vertical|     :vertical {cmd}         使命令 {cmd} 垂直分割|:sfind|        :sf[ind] {file}         分割視窗,從 {path} 中找到檔案                                           {file} 並編輯之|CTRL-W_]|      CTRL-W ]                分割視窗並跳轉到游標下的標籤|CTRL-W_f|      CTRL-W f                分割視窗並編輯游標下的檔案名稱 (file)|CTRL-W_^|      CTRL-W ^                分割視窗並編輯輪換檔案|CTRL-W_n|      CTRL-W n  或  :new      建立新空白視窗              (new)|CTRL-W_q|      CTRL-W q  或  :q[uit]   退出編輯並關閉視窗          (quit)|CTRL-W_c|      CTRL-W c  或  :cl[ose]  隱藏當前緩衝區並關閉視窗    (close)|CTRL-W_o|      CTRL-W o  或  :on[ly]   使當前視窗成為唯一視窗      (only)|CTRL-W_j|      CTRL-W j                跳轉到下方視窗|CTRL-W_k|      CTRL-W k                跳轉到上方視窗|CTRL-W_CTRL-W| CTRL-W CTRL-W           移動游標至下方視窗 (折轉)   (Wrap)|CTRL-W_W|      CTRL-W W                移動游標至上方視窗 (折轉)   (wrap)|CTRL-W_t|      CTRL-W t                跳轉到頂端視窗              (top)|CTRL-W_b|      CTRL-W b                跳轉到底端視窗              (bottom)|CTRL-W_p|      CTRL-W p                跳轉到上一次啟用的視窗      (previous)|CTRL-W_r|      CTRL-W r                向下旋轉視窗                (rotate)|CTRL-W_R|      CTRL-W R                向上旋轉視窗                (Rotate)|CTRL-W_x|      CTRL-W x                將當前視窗與下一個視窗對調  (eXchange)|CTRL-W_=|      CTRL-W =                使所有視窗等高|CTRL-W_-|      CTRL-W -                減少當前視窗高度|CTRL-W_+|      CTRL-W +                增加當前視窗高度|CTRL-W__|      CTRL-W _                設定當前視窗高度 (預設: 很高)
改變文本
|~|       N  ~          翻轉 N 個字元的大小寫並前進游標|v_~|        {visual}~  翻轉高亮文本的大小寫|v_u|        {visual}u  改高亮的文本為小寫|v_U|        {visual}U  改高亮的文本為大寫|g~|         g~{motion} 將動作 {motion} 覆蓋的文本翻轉大小寫|gu|         gu{motion} 將動作 {motion} 覆蓋的文本改為小寫|gU|         gU{motion} 將動作 {motion} 覆蓋的文本改為大寫|v_g?|       {visual}g? 對高亮的文本做 rot13 編碼|g?|         g?{motion} 對動作 {motion} 覆蓋的文本做 rot13 編碼|CTRL-A|  N  CTRL-A     將游標之上或之後的數值增加 N|CTRL-X|  N  CTRL-X     將游標之上或之後的數值減少 N
改變文本
|<|       N  <{motion}  將動作 {motion} 覆蓋的所有行向左移動一個移位寬度|<<|      N  <<         將 N 行向左移動一個移位寬度  例如:ctrl+v 選中n行,>>|>|       N  >{motion}  將動作 {motion} 覆蓋的所有行向右移動一個移位寬度|>>|      N  >>         將 N 行向右移動一個移位寬度|gq|      N  gq{motion} 將動作 {motion} 覆蓋的所有行進行排版到 'textwidth' 寬|:ce|     :[range]ce[nter] [width]                        將範圍 [range] 包括的行置中對齊|:le|     :[range]le[ft] [indent]                        將範圍 [range] 中的行靠左對齊 (使用 [indent])|:ri|     :[range]ri[ght] [width]                        將範圍 [range] 中的行靠右對齊
複雜改動
|!|        N  !{motion}{command}<CR>    將動作覆蓋的行用命令  {command} 過濾|!!|       N  !!{command}<CR> 將 N 行用命令 {command} 過濾|v_!|         {visual}!{command}<CR>    將高亮的行用命令 {command} 過濾|:range!|  :[range]! {command}<CR>  將範圍 [range] 包括的行用命令 {command} 過濾|=|        N  ={motion} 將動作覆蓋的行用 'equalprg' 過濾|==|       N  ==        將 N 行用 'equalprg' 過濾|v_=|         {visual}= 將高亮的行用 'equalprg' 過濾|:s|       :[range]s[ubstitute]/{pattern}/{string}/[g][c]    以 {string} 替代範圍 [range] 包括的行中的 {pattern};    與 [g] 共用,替代所有的出現的 {pattern};    與 [c] 共用,確認每一次替代|:s|       :[range]s[ubstitute] [g][c] 以新的範圍和選項重複上一次的 ":s" 命令|&|           &         不帶選項在當前行上重複上一次的 ":s" 命令|:ret|     :[range]ret[ab][!] [tabstop] 置 'tabstop' 為新值並依據此值調整空白字元
模式尋找
|/|     N  /{pattern}[/[search-offset]]<CR> search-offset 這個後面會介紹                        向前尋找第 N 次出現 {pattern} 的地方|?|     N  ?{pattern}[?[search-offset]]<CR>                        向後尋找第 N 次出現 {pattern} 的地方|/<CR>| N  /<CR>        向前重複上次尋找|?<CR>| N  ?<CR>        向後重複上次尋找|n|     N  n            重複上次尋找|N|     N  N            相反方向重複上次尋找|star|  N  *            向前尋找游標下的標識符|#|     N  #            向後尋找游標下的標識符|gstar| N  g*           同 "*",但也尋找部分匹配|g#|    N  g#           同 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.