vi 的操作手冊

離開 vi
ZZ :wq :x 先存檔再離開
:w     檔名 存成他檔
:q     離開 (檔案有改會提示)
:q!     放棄編輯,直接離開
:wq!    強制存檔,並離開


暫時離開 vi  
:!      暫時執行一下UNIX指令
:sh     產生新shell, Ctrl + d 回原編輯處
Ctrl + z   回上一個 shell, 用 fg指令回 vi


插入/命令模式的切換
ESC鍵  插入模式 --> 命令模式

在命令模式下的指令
a    在游標右邊插入文字
i    在游標處插入文字
o    在游標下方增加新列
A    在游標那列末端插入文字
I    在游標那列開頭插入文字
O     在游標上方增加新列

移動游標
k    往上移
j    往下移
h    往左移
l    往右移
^    移到列首
$    移到列尾
w    往右移一個字(word)
b    往左移一個字(word)
e    移到目前所在字(word)的最後字元
G    移到檔尾
nG   移到第 n 列

:n    游標移到第 n 列
:$    游標移到最後一列
H    游標移到螢幕頂端
M    游標移到螢幕中間
L    游標移到螢幕底端
ctrl + d  游標向下捲半頁
ctrl + u  游標向上捲半頁
ctrl + f  游標向上捲一頁
ctrl + b  游標向下捲一頁

ctrl + G  查詢目前的游標位置
刪除資料
x    刪除游標所在字元(delete)
#x   從游標起,刪 # 個字元
X    刪除游標的前一字元(backspace)
#X   從游標起,往前刪 # 個字元
dw   刪一個字(word)
#dw   刪 # 個字(word)
D    刪字到列末
dd   整列刪除
#dd   從游標列開始,刪除 # 列
dG   從游標處刪到檔尾


搬移和複製
ndd   從游標處起 n 列, 剪到暫存區
nyy   從游標處起 n 列, 複製暫存區
p    將暫存區的內容貼到游標處
n,m co x  將 n 到 m 列的資料, 複製到 x 列
n,m m x  將 n 到 m 列的資料, 移到 x 列
.,$ co x  將游標所在列到檔尾的資料, 複製到 x 列


搜尋和取代
/     字串搜尋
:set ic   搜尋時不考慮大小寫
:set noic  搜尋時需考慮大小寫
n    向下搜尋
N    向上搜尋

r    將游標所在換成另一字元
cw   取代一個字串
cc   取代一整列
:s    取代多個字串
:1,$ s  /舊字串/新字串/g 1是第1列, $是最後一列, g是全檔

合併 列/檔案
J    合併兩列
:r    檔名 將他檔插在游標所在列之後
: n r   檔名 將他檔插在第 n 列之後

u    取消前一命令(undo)
U    對這列的修改全取消

:set nu  加上行號
:set nonu 不顯示行號