一、移動(dòng)
左-下-上-右:h-j-k-l
移動(dòng)到當(dāng)間單詞的開始:b(begin)
移動(dòng)到當(dāng)前單詞的結(jié)束:e(end)
移動(dòng)到下一個(gè)單詞的開始:w
到行尾:$
到行首:0
到代碼首(有縮進(jìn)):^
到某行:nG
到文件開始:gg
到文件結(jié)尾:G
向下偏移n行:n+
向上偏移n行:n-
屏首: H
屏尾:L
屏中:M
向上滾動(dòng)一屏: C-b
向下滾動(dòng)一屏: C-f
二、刪除
刪除當(dāng)前字符:x
刪除前一個(gè)字符:X
刪除一個(gè)單詞/光標(biāo)之后的單詞剩余部分:dw
刪除當(dāng)前一個(gè)單詞:daw(delete a word)
刪除以當(dāng)前字符開始的n個(gè)字: ndw
刪除光標(biāo)之后的該行部分:d$ 或 D (內(nèi)容清除,但行不刪除)
刪除當(dāng)前行,并馬上進(jìn)入insert狀態(tài):cc
刪至行首: d0
刪除一行: dd
刪除2行: d回車
刪除以當(dāng)前行開始的n行: ndd
刪除到文件結(jié)尾:dG
刪除到文件開頭:dgg
三、修改
上插一行:O
下插一行:o
前插入:i
后插入:a
復(fù)制當(dāng)前行: yy (dd代表復(fù)制并刪除)
使用“命名寄存器”進(jìn)行的復(fù)制: "ayy (命名了一個(gè)a寄存器)
復(fù)制n行:nyy (ndd代表復(fù)制并刪除)
粘貼: p(向下行插入并粘貼),P(向上行插入并粘貼)
使用“命名寄存器”進(jìn)行的粘貼:”ap (使用了a寄存器進(jìn)行粘貼)
把下面一行合并到本行后面: J
四、恢復(fù)及重復(fù):
. 重復(fù)上一次操作
u 恢復(fù)上一次的操作
五、進(jìn)入和退出Vi命令及工作區(qū)參數(shù)設(shè)定
vi filename 打開或新建文件,并將光標(biāo)置于第一行首
vi +n filename 打開文件,并將光標(biāo)置于第n行首
vi + filename 打開文件,并將光標(biāo)置于最后一行首
vi +/pattern filename 打開文件,并將光標(biāo)置于第一個(gè)與pattern匹配的串處
vi -r filename 在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)filename
vi filename ... filename 打開多個(gè)文件,依次進(jìn)行編輯
ZZ 退出vi并保存
:q! 退出vi,不保存
:wq 退出vi并保存
set nu #行號(hào)
set tabstop=4 #一個(gè)tab為4個(gè)空格長度
set ai #設(shè)置自動(dòng)縮進(jìn)
syntax on #高亮
六、Vi中查找及替換命令
查找:
/pattern 從光標(biāo)開始處向文件尾搜索pattern
?pattern 從光標(biāo)開始處向文件首搜索pattern
n 在同一方向重復(fù)上一次搜索命令
N 在反方向上重復(fù)上一次搜索命令
查找并替換:
:s/p1/p2/g 將當(dāng)前行中所有p1均用p2替代,若要每個(gè)替換都向用戶詢問則應(yīng)該用gc選項(xiàng)
:n,ms/p1/p2/g 將第m至n行中所有p1替換成p2
:.,+2s/p1/p2/g 將當(dāng)前行及后兩行中所有p1替換成p2
:%s/p1/p2/g 將文件中所有p1均用p2替換(%s表示所有的行)
七、多窗口操作:
打開及新建文件::e 文件名
執(zhí)行shell命令::! command
窗口水平分割 :split,
垂直分割::vsplit,
循環(huán)移動(dòng)焦點(diǎn):ctrl+ww,
上下左右移動(dòng)焦點(diǎn):ctrl+w+[hjkl]