vim使用技巧

 說明:
以下的例子中 xxx 表示在命令模式下輸入 xxx 並回車
以下的例子中 :xxx 表示在擴展模式下輸入 xxx 並回車
小括號中的命令表示相關命令.
在編輯模式或可視模式下輸入的命令會另外註明.
=====================================================================================
1. 查找

  /xxx(?xxx)      表示在整篇文檔中搜索匹配xxx的字符串, / 表示向下查找, ? 表示
                  向上查找.其中xxx可以是正規表達式,關於正規式就不多說了.
                  一般來說是區分大小寫的, 要想不區分大小寫, 那得先輸入
                  :set ignorecase
                  查找到以後, 再輸入 n 查找下一個匹配處, 輸入 N 反方向查找.
  *(#)            當光標停留在某個單詞上時, 輸入這條命令表示查找與該單詞匹配的
                  下(上)一個單詞. 同樣, 再輸入 n 查找下一個匹配處, 輸入 N 反方
                  向查找.
  g*(g#)          此命令與上條命令相似, 只不過它不完全匹配光標所在處的單詞, 而
                  是匹配包含該單詞的所有字符串.
  gd              本命令查找與光標所在單詞相匹配的單詞, 並將光標停留在文檔的非
                  註釋段中第一次出現這個單詞的地方.
  %               本命令查找與光標所在處相匹配的反括號, 包括 () [] {}
  f(F)x           本命令表示在光標所在行進行查找, 查找光標右(左)方第一個x字符.
                  找到後:
                  輸入 ; 表示繼續往下找
                  輸入 , 表示反方向查找

2. 快速移動光標
   在 vi 中, 移動光標和編輯是兩件事, 正因爲區分開來, 所以可以很方便的進行光標定
位和編輯. 因此能更快一點移動光標是很有用的.

  w(e)            移動光標到下一個單詞.
  b               移動光標到上一個單詞.
  0               移動光標到本行最開頭.
  ^               移動光標到本行最開頭的字符處.
  $               移動光標到本行結尾處. 
  %               移動光標到配對的{或},[或],(或)
  H               移動光標到屏幕的首行.
  M               移動光標到屏幕的中間一行.
  L               移動光標到屏幕的尾行.
  gg              移動光標到文檔首行.
  G               移動光標到文檔尾行.
  c-f             (即 ctrl 鍵與 f 鍵一同按下) 本命令即 page down.
  c-b             (即 ctrl 鍵與 b 鍵一同按下, 後同) 本命令即 page up.
  ''              它移動光標到上一個標記處, 比如用 gd, * 等查
                  找到某個單詞後, 再輸入此命令則回到上次停留的位置.
  '.              此命令相當好使, 它移動光標到上一次的修改行.
  `.              此命令相當強大, 它移動光標到上一次的修改點. 
  c-o             移動光標到前一處跳轉處
  c-i             移動光標到後一處跳轉處
  ]]              移動光標到下一個函數{處
  [[              移動光標到上一個函數{處
  ][              移動光標到下一個函數}處
  []              移動光標到上一個函數}處

3. 拷貝, 刪除與粘貼
   在 vi 中 y 表示拷貝, d 表示刪除, p 表示粘貼. 其中拷貝與刪除是與光標移動命令
結合的, 看幾個例子就能夠明白了.

  yw              表示拷貝從當前光標到光標所在單詞結尾的內容.
  dw             表示刪除從當前光標到光標所在單詞結尾的內容.
  y0              表示拷貝從當前光標到光標所在行首的內容.
  d0             表示刪除從當前光標到光標所在行首的內容.
  y$              表示拷貝從當前光標到光標所在行尾的內容.
  d$             表示刪除從當前光標到光標所在行尾的內容.
  yfa             表示拷貝從當前光標到光標後面的第一個a字符之間的內容.
  dfa            表示刪除從當前光標到光標後面的第一個a字符之間的內容.

  特殊地:
  yy              表示拷貝光標所在行.
  dd             表示刪除光標所在行.
  D               表示刪除從當前光標到光標所在行尾的內容.

  關於拷貝, 刪除和粘貼的複雜用法與寄存器有關, 可以自行查詢.

4. 數字與命令
   在 vi 中數字與命令結合往往表示重複進行此命令, 若在擴展模式的開頭出現則表示行
號定位. 如:

  5fx             表示查找光標後第 5 個 x 字符.
  5w(e)           移動光標到下五個單詞.
  5yy             表示拷貝光標以下 5 行.
  5dd             表示刪除光標以下 5 行.
  y2fa            表示拷貝從當前光標到光標後面的第二個a字符之間的內容.
  :12,24y         表示拷貝第12行到第24行之間的內容.
  :12,y           表示拷貝第12行到光標所在行之間的內容.
  :,24y           表示拷貝光標所在行到第24行之間的內容. 刪除類似.

5. 替換
   替換是 vi 的強項, 因爲可以用正規表達式來匹配字符串.以下提供幾個例子.

  :s/aa/bb/g             將光標所在行出現的所有包含 aa 的字符串中的 aa 替換爲 bb
  :s/\<aa\>/bb/g      將光標所在行出現的所有 aa 替換爲 bb, 僅替換 aa 這個單詞
  :%s/aa/bb/g         將文檔中出現的所有包含 aa 的字符串中的 aa 替換爲 bb
  :12,23s/aa/bb/g    將從12行到23行中出現的所有包含 aa 的字符串中的 aa 替換爲 bb
  :1,.s/aa/bb/g        將從第1行到當前行中出現的所有包含 aa 的字符串中的 aa 替換爲 bb
  :.,$s/aa/bb/g        將從當前行到最後一行中出現的所有包含 aa 的字符串中的 aa 替換爲 bb
  :12,23s/^/#/          將從12行到23行的行首加入 # 字符
  :%s= *$==           將所有行尾多餘的空格刪除
  :g/^\s*$/d             將所有不包含字符(空格也不包含)的空行刪除.

6. 多文件編輯 
  :sp  文件名          vim 將分割出一個橫向窗口, 並在該窗口中打開新文件.
  :vsp  文件名        vim 將分割出一個縱向窗口, 並在該窗口中打開新文件.
  :e 文件名             vim 將在原窗口中打開新的文件, 若舊文件編輯過, 會要求保存.
  :ls             此命令查看本 vim 程序已經打開了多少個文件, 在屏幕的最下方會顯示出如下數據:
                  1 %a "usevim.html" 行 162
                  2 # "xxxxxx.html" 行 0
                  其中:
                  1 表示打開的文件序號, 這個序號很有用處.
                  %a 表示文件代號, % 表示當前編輯的文件,
                  # 表示上次編輯的文件
                  "usevim.html" 表示文件名.
                  行 162 表示光標位置.
  :b 序號(代號)     此命令將指定序號(代號)的文件在本窗口打開, 其中的序號(代號)就是用 :ls 命令看到的.
  :set diff               此命令用於比較兩個文件, 可以用:vsp filename命令打開另一個文件, 然後在每個文件窗口中輸入此命令,就能看到效果了.
多窗口時在窗口間跳轉:
  c-w後按w        移動光標到下一個窗口
  c-w後按h        移動光標到左邊窗口
  c-w後按l         移動光標到右邊窗口
  c-w後按j         移動光標到下邊窗口
  c-w後按k        移動光標到上邊窗口
多窗口時調整窗口大小:
  c-w後按+        增加光標所在窗口高度
  c-w後按-        減少光標所在窗口高度
  c-w後按<        增加光標所在窗口寬度
  c-w後按-        減少光標所在窗口寬度
  默認會改變窗口大小一行或一列,如果要一次調整多行或多列,在以上操作前輸入要調整改變的值

=====================================================================================
上面的使用轉載了一些其他人的,也自己補充了很多,下面是自己一些其他經驗的補充
=====================================================================================

1. 替換行尾^M
    很多gb2312編碼的文件用vim用utf-8模式打開就會看到行尾的^M,使用vim替換命令即可全部替換:
    :%s/^M//g
   替換簡單,只是^M不是普通打出來的(^M顯示藍色),需要按ctrl+v+m纔可以。

2. 自動對齊
    vim中=爲自動對齊命令,主要是對齊代碼縮進,以下是常用的自動對齊方式:
    =G   從當前行開始到文件結束處進行自動對齊
    5==   從當前行開始向下對齊5行(包括當前行)
    v鍵進入選擇模式,選中多行,按=,即可將選中的這幾行進行自動對齊

3. 粘貼時取消縮進與註釋
    默認粘貼時所有行會自動縮進與註釋,導致粘貼後格式混亂,運行以下命令即可取消,恢復正常粘貼:
    :set paste
    運行以下命令即恢復粘貼時縮進與註釋:
    :set nopaste

 

發佈了20 篇原創文章 · 獲贊 21 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章