進(jìn)入vi
vi filename?# 打開或新建文件,并將光標(biāo)置于第一行首
vi +n filename?# 打開文件库物,并將光標(biāo)置于第n行首
vi + filename?# 打開文件,并將光標(biāo)置于最后一行首
vi +/pattern filename?# 打開文件指巡,并將光標(biāo)置于第一個與pattern匹配的串處
vi -r filename?# 在上次正用vi編輯時發(fā)生系統(tǒng)崩潰质和,恢復(fù)filename
vi filename....filename?# 打開多個文件,依次進(jìn)行編輯
保存退出
w?# 保存當(dāng)前文件
w /tmp1?# 另存為/tmp1?
20,59w /tmp1?# 僅將20-59行之間的內(nèi)存另存為/tmp1?
x?或?wq?# 保存退出?
q?# 退出vi?
q!?# 退出不保存?
!command?# 執(zhí)行shell命令command?
n1,n2 w !command?# 將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之棱诱,若不指定n1泼橘,n2,則表示將整個文件內(nèi)容作為command的輸入?
r !command?# 將命令command的輸出結(jié)果放到當(dāng)前行?
w !sudo tee %?# 保存沒權(quán)限時迈勋,可獲取權(quán)限再保存?
光標(biāo)移動
h?# 光標(biāo)左移一個字符?
l?# 光標(biāo)右移一個字符?
space?# 光標(biāo)右移一個字符?
Backspace?# 光標(biāo)左移一個字符?
k?或?Ctrl+p?# 光標(biāo)上移一行?
j?或?Ctrl+n?# 光標(biāo)下移一行?
Enter?# 光標(biāo)下移一行?
w?或?W?# 光標(biāo)右移一個字至字首?
b?或?B?# 光標(biāo)左移一個字至字首?
e?或?E?# 光標(biāo)右移一個字至字尾?
)?# 光標(biāo)移至句尾?
(?# 光標(biāo)移至句首?
}?# 光標(biāo)移至段落開頭?
{?# 光標(biāo)移至段落結(jié)尾?
nG?# 光標(biāo)移至第n行首?
n+?# 光標(biāo)下移n行?
n-?# 光標(biāo)上移n行?
n$?# 光標(biāo)移至第n行尾?
H?# 光標(biāo)移至屏幕頂行?
M?# 光標(biāo)移至屏幕中間行?
L?# 光標(biāo)移至屏幕最后行?
0?# (注意是數(shù)字零)光標(biāo)移至當(dāng)前行首?
$?# 光標(biāo)移至當(dāng)前行尾?
屏幕翻滾
Ctrl+u?# 向文件首翻半屏?
Ctrl+d?# 向文件尾翻半屏?
Ctrl+f?# 向文件尾翻一屏?
Ctrl+b?# 向文件首翻一屏?
nz?# 將第n行滾至屏幕頂部炬灭,不指定n時將當(dāng)前行滾至屏幕頂部?
插入
i?# 在光標(biāo)前?
I?# 在當(dāng)前行首?
a?# 光標(biāo)后?
A?# 在當(dāng)前行尾?
o?# 在當(dāng)前行之下新開一行?
O?# 在當(dāng)前行之上新開一行?
r?# 替換當(dāng)前字符?
R?# 替換當(dāng)前字符及其后的字符,直至按ESC鍵?
s?# 從當(dāng)前光標(biāo)位置處開始粪躬,以輸入的文本替代指定數(shù)目的字符?
S?# 刪除指定數(shù)目的行担败,并以所輸入文本代替之?
ncw?或?nCW?# 修改指定數(shù)目的字?
nCC?# 修改指定數(shù)目的行?
刪除
ndw 或?ndW?# 刪除光標(biāo)處開始及其后的n-1個字?
do?# 刪至行首?
d$?# 刪至行尾?
ndd?# 刪除當(dāng)前行及其后n-1行?
x?或?X?# 刪除一個字符昔穴,x刪除光標(biāo)后的,而X刪除光標(biāo)前的?
Ctrl+u?# 刪除輸入方式下所輸入的文本? n1,n2
d?# 將n1行到n2行之間的內(nèi)容刪除?
%d?# 刪除全部內(nèi)容?
1,$d?# 刪除全部內(nèi)容?
復(fù)制粘貼提前、剪切吗货、移動
yy?# 復(fù)制當(dāng)前行?
nyy?# 復(fù)制當(dāng)前行開始的n行? 先按?v?然后方向鍵選擇區(qū)域,按?y?復(fù)制選中行?
dd?# 剪切當(dāng)前行?
p(斜吠)?# 在當(dāng)前光標(biāo)處下面粘貼內(nèi)容宙搬。?
P(大)?# 在當(dāng)前光標(biāo)處上面粘貼內(nèi)容?
n1,n2 co n3?# 將n1行到n2行之間的內(nèi)容拷貝到第n3行下?
n1,n2 m n3?# 將n1行到n2行之間的內(nèi)容移至到第n3行下?
搜索(查找)
/abc?# 從光標(biāo)開始處向文件尾搜索abc?
?abc?# 從光標(biāo)開始處向文件首搜索abc?
/\/abc?# 從光標(biāo)開始處向文件尾搜索/abc,其中/是轉(zhuǎn)義?
n?# 在同一方向重復(fù)上一次搜索命令?
N?# 在反方向上重復(fù)上一次搜索命令?
替換
s/vivian/sky/?# 替換當(dāng)前行第一個 vivian 為 sky?
s/vivian/sky/g?# 替換當(dāng)前行所有 vivian 為 sky?
n,$s/vivian/sky/?# 替換第 n 行開始到最后一行中每一行的第一個 vivian 為 sky?
n,$s/vivian/sky/g?# 替換第 n 行開始到最后一行中每一行所有 vivian sky?
%s/vivian/sky/g?# (等同于 g/vivian/s//sky/) 替換每一行的每一個 vivian 為 sky
? s#vivian/#sky/#?# 替換當(dāng)前行第一個 vivian/ 為 sky/(可以使用 #或+作為分隔符拓哺,此時中間出 現(xiàn)的 / 不會作為分隔符)?
s/p1/p2/g?# 將當(dāng)前行中所有p1均用p2替代?
n1,n2s/p1/p2/g?# 將第n1至n2行中所有p1均用p2替代?
g/p1/s//p2/g?# 將文件中所有p1均用p2替換?
寄存器
"?nyy?# 將當(dāng)前行及其下n行的內(nèi)容保存到寄存器勇垛?中,其中?為一個字母士鸥,n為一個數(shù)字?
"?nyw?# 將當(dāng)前行及其下n個字保存到寄存器闲孤?中,其中?為一個字母烤礁,n為一個數(shù)字?
"?nyl?# 將當(dāng)前行及其下n個字符保存到寄存器讼积?中,其中?為一個字母脚仔,n為一個數(shù)字?
"?p?# 取出寄存器勤众?中的內(nèi)容并將其放到光標(biāo)位置處。這里鲤脏?可以是一個字母们颜,也可以是一個數(shù)字?
ndd?# 將當(dāng)前行及其下共n行文本刪除,并將所刪內(nèi)容放到1號刪除寄存器中猎醇。?
選項設(shè)置
set number?# 顯示行號?
set number!?# 不顯示行號窥突,其它選項同理加!號?
set all?# 列出所有選項設(shè)置情況?
set term?# 設(shè)置終端類型?
set ignorance?# 在搜索中忽略大小寫?
set list?# 顯示制表位(Ctrl+I)和行尾標(biāo)志($)?
set report?# 顯示由面向行的命令修改過的數(shù)目?
set terse?# 顯示簡短的警告信息?
set warn?# 在轉(zhuǎn)到別的文件時若沒保存當(dāng)前文件則顯示NO write信息?
set nomagic?# 允許在搜索模式中姑食,使用前面不帶“”的特殊字符?
set nowrapscan?# 禁止vi在搜索到達(dá)文件兩端時波岛,又從另一端開始?
set mesg?# 允許vi顯示其他用戶用write寫到自己終端上的信息?
這期就先到這里!