模式:
指令模式:輸入模式: 在指令模式按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