2015年7月10日 星期五

vi/vim筆記

模式:

  指令模式:
  輸入模式: 在指令模式按i或a進入輸入模式;按Esc離開輸入模式

指令:

 <模式切換>

  i: 進入輸入模式(文字在指標前)
  a: 進入輸入模式(文字在指標後)
  [Esc]: 離開輸入模式

 <指標移動>

  $: 移到行末
  0: 移到行首
  :[num]: 跳到第num行
  %: 跳到對應的括號
  gg: 跳到檔案底一列
  G: 跳到檔案最後一列
  [num][Enter]: 往下跳num行

<修改>

  u: 復原
  [Ctrl]+r: 重作指令
  d [num]: 刪除num行
  dd: 刪除一行
  y [num]: 複製num行
  yy: 複製一行
  p: 從緩衝貼上(刪除或複製的均會存在緩衝)
       (剪下可用刪除+貼上達成)
  v: 字串標記
  V: 行標記

<搜尋與取代>

  /[str]: 往下找出str字串
  ?[str]: 往上找出str字串
  n: 往下搜尋相同字串
  N: 往上搜尋相同字串
  *: 找出指標所在的字串
  :[範圍]s/[比對字串]/[取代字串]/[g,c,i]: 將比對字串取代為取代字串。gic為控制選項。g表示整行全部;c表示取代前確認;i表示不分大小寫
   e.g.
    :%s/abc/def/  :把abc換成def
  :nohlsearch: 暫時關掉highlight
  :noh: 暫時關掉highlight

<存檔>

  :w: 存檔
  :q: 關閉vi

<行首插入>

游標移動到要插入的地方
[Ctrl]+v: 標記行(區塊)
I: 插入文字
[Esc]: 結束插入,標記的行(區塊)會插入文字

e.g.:在行首插入";"
按下[Ctrl]+v標記行

按下I並插入文字

按下Esc,完成插入。

<行尾插入>

  同行首插入,但利用A進入輸入模式,而不是用原本的I

<視窗>

  :new [filename]: 在新視窗開啟filename
  :only: 只保留當前視窗,其餘關閉
  [Ctrl]+w 切換視窗;再按箭頭下切換到下方視窗,再按箭頭上切換到上方視窗。
  :q 同樣也用q關閉視窗

<分頁>

  :tabe [filename]: 在新分頁中開啟檔案
  :tabN: 切換上一個分頁
  :tabn: 切換下一個分頁
  :tabclose: 關掉分頁
  :tabonly: 只保留當前分頁
  另外,在開啟vim時可以將多個檔案開在不同視窗:(利用-p)
  e.g.:
   vim -p <file1> <file2>

<排版>

  =: 自動排版
  e.g.
    ggVG=
    (檔案首行,列模式,檔案底行,自動排版)
  e.g.
    =[num]
    排版num行
Ref:
http://www2.nsysu.edu.tw/csmlab/unix/vi_command.htm
http://awei791129.pixnet.net/blog/post/29353976-%5Blinux%5D%5Bvi%5D-vi-or-vim-%E7%9A%84%E6%90%9C%E5%B0%8B%E5%8F%96%E4%BB%A3%E5%8A%9F%E8%83%BD
http://www.vixual.net/blog/archives/234

沒有留言:

張貼留言