進入vi的命令
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),雞澤企業(yè)網(wǎng)站建設(shè),雞澤品牌網(wǎng)站建設(shè),網(wǎng)站定制,雞澤網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,雞澤網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
vi filename :打開或新建文件,并將光標置于第一行首
vi +n filename :打開文件,并將光標置于第n行首
vi + filename :打開文件,并將光標置于最后一行首
vi +/pattern filename:打開文件,并將光標置于第一個和pattern匹配的串處
vi -r filename :在上次正用vi編輯時發(fā)生系統(tǒng)崩潰,恢復filename
vi filename....filename :打開多個文件,依次進行編輯
移動光標類命令
h :光標左移一個字符
l :光標右移一個字符
space:光標右移一個字符
Backspace:光標左移一個字符
k或Ctrl+p:光標上移一行
j或Ctrl+n :光標下移一行
Enter :光標下移一行
w或W :光標右移一個字至字首
b或B :光標左移一個字至字首
e或E :光標右移一個字至字尾
) :光標移至句尾
( :光標移至句首
}:光標移至段落開頭
{:光標移至段落結(jié)尾
nG:光標移至第n行首
n+:光標下移n行
n-:光標上移n行
n$:光標移至第n行尾
H :光標移至屏幕頂行
M :光標移至屏幕中間行
L :光標移至屏幕最后行
0:(注意是數(shù)字零)光標移至當前行首
$:光標移至當前行尾
屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
插入文本類命令
i :在光標前
I :在當前行首
a:光標后
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字符
R:替換當前字符及其后的字符,直至按ESC鍵
s:從當前光標位置處開始,以輸入的文本替代指定數(shù)目的字符
S:刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW:修改指定數(shù)目的字
nCC:修改指定數(shù)目的行
刪除命令
ndw或ndW:刪除光標處開始及其后的n-1個字
do:刪至行首
d$:刪至行尾
ndd:刪除當前行及其后n-1行
x或X:刪除一個字符,x刪除光標后的,而X刪除光標前的
Ctrl+u:刪除輸入方式下所輸入的文本
搜索及替換命令
/pattern:從光標開始處向文件尾搜索pattern
?pattern:從光標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
:s/p1/p2/g:將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換
選項設(shè)置
all:列出所有選項設(shè)置情況
term:設(shè)置終端類型
ignorance:在搜索中忽略大小寫
list:顯示制表位(Ctrl+I)和行尾標志($)
number:顯示行號
report:顯示由面向行的命令修改過的數(shù)目
terse:顯示簡短的警告信息
warn:在轉(zhuǎn)到別的文件時若沒保存當前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶“”的特別字符
nowrapscan:禁止vi在搜索到達文件兩端時,又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
最后行方式命令
:n1,n2 co n3:將n1行到n2行之間的內(nèi)容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內(nèi)容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內(nèi)容刪除
:w :保存當前文件
:e filename:打開文件filename進行編輯
:x:保存當前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:執(zhí)行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之,若不指定n1,n2,則表示將整個文件內(nèi)容作為command的輸入
:r!command:將命令command的輸出結(jié)果放到當前行
寄存器操作
"?nyy:將當前行及其下n行的內(nèi)容保存到寄存器?中,其中?為一個字母,n為一個數(shù)字
"?nyw:將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數(shù)字
"?nyl:將當前行及其下n個字符保存到寄存器?中,其中?為一個字母,n為一個數(shù)字
"?p:取出寄存器?中的內(nèi)容并將其放到光標位置處。這里?能是個字母,也能是個數(shù)字
ndd:將當前行及其下共n行文本刪除,并將所刪內(nèi)容放到1號刪除寄存器中。
進入vi
vi test
離開vi
:q! 離開vi,并放棄剛在緩沖區(qū)內(nèi)編輯的內(nèi)容。
:wq 將緩沖區(qū)內(nèi)的資料寫入磁盤中,并離開vi。
:ZZ 同wq
同wq
:w 將緩沖區(qū)內(nèi)的資料寫入磁盤中,但并不離開vi。
:q 離開vi,若文件被修改過,則會被需求確認是否放棄修改的內(nèi)容,此指令可和: w 配合使用。
Vi 的操作模式
Vi 提供兩種操作模式:
輸入模式(insert mode)
指令模式(command mode)
當使用者進入vi后,既處于指令模式下,此刻鍵入所有字元皆被視為指令。
輸入模式:a(append) 游標之后加入資料。
A 該行之末加入資料
i (insert) 游標之前加入資料
I 該行之首加入資料
o (open) 新增一行和該行之下供輸入資料
O 新增一行和該行之上供輸入資料
指令模式:B 移至該行第一個字符,若光標在該行第一字符則光標移至上一行第一字符。
b 由游標所在位置之前一個字串的第一個字元
cc 刪除整行,修改整行的內(nèi)容。
D 以行為單位,刪除游標在內(nèi)后面的所有字符。
db 刪除該行光標前字符
dd 刪除該行
de 刪除自光標開始后面的字符
d加字符 刪除光標所在位置至字符之間的單
E移至該行最后字符,若光標在該行最后字符則光標移至下一行最后字符
e由游標所在位置至該字串的最后一個字元
G 移至該檔案的最后一行
h 向前移一個字元
j 向下移一個字元
k 向上移一個字元
0 移至該行之首
M 移至視窗的中間那行
L 移至視窗的最后一行
l 向后移一個字符
0 由游標所在位置該行的第一個字元
nG 移至該檔案的第n行
n+ 自游標所在位置向后移n行至該行的第一字符
n- 自游標所在位置向前移n行至該行的第一字符
R 進入取代狀態(tài),直到《ESC》為止
s 刪除游標所在字元,并進入取代模式直到《ESC》
S 刪除游標所在之該行資料,并進入輸入模式直到《ESC》
w 由游標所在位置之下一個字串的第一個字元
x 刪除游標所在該字元。
X 刪除游標所在之前一字元。
r 用接于此指令之后的字元取代(replace)游標所在字元
yy yank整行,使游標所在該行復制到記憶體緩沖區(qū)
顯示該行之行號、檔案名稱、檔案中最末之行號、游標所在行號占
總行號之百分比
$ 由游標所在位置至該行的最后一個字元。
) 由游標所在位置至下一個句子的第一個字元。
( 由游標所在位置至該句子的第一個字元。
{ 由游標所在位置至該段落的最后一個字元。
} 由游標所在位置至該段落的第一個字元
yank和delete可將指定的資料復制到記憶體緩沖區(qū),而藉有put指令可將緩沖區(qū)內(nèi)的資料復制到熒幕上
例如:搬移一行 :在該行執(zhí)行dd
游標移至目的地
執(zhí)行p
復制一行 :在該行執(zhí)行yy
游標移至目的地
執(zhí)行p
視窗移動:
視窗往下卷一頁
視窗往上卷一頁
視窗往下卷半頁
視窗往上卷半頁
視窗往下卷一行
視窗往上卷一行
刪除、復制及修改指令介紹:
d(delete)、c(change)和y(yank)這一類的指令在vi 中的指令格式為:
operation+scope=command
(運算子)(范圍)
運算子:
d 刪除指令。刪除資料,但會將刪除資料復制到記憶體緩沖區(qū)。
y 將資料(字組、行列、句子或段落)復制到緩沖區(qū)。
p 放置(put)指令,和d和y配合使用??蓪⒆詈骴elete或yank的資料放置于游標所在位置之行列下。
c 修改(change)指令,類似delete于insert的組合。刪除一個字組、句子等資料,并插入新鍵入的
vi profile
返回
:q 退出
:wq或者:x或者shift+zz 保存并退出
:q! 不保存并退出
:w 保存
:w! 強制保存
編輯到輸入模式:
i 在當前光標前面輸入
I 在當前光標所在行的行首,轉(zhuǎn)換為輸入模式
a 在當前光標后面輸入
A 在當前光標所在行的行尾,轉(zhuǎn)換為輸入模式
o 在當前光標所在行的下方,新建一行,并轉(zhuǎn)為輸入模式
O 在當前光標所在行的上方,新建一行,并轉(zhuǎn)為輸入模式
1、 移動光標
字符:方向鍵上下左右或者鍵盤kjhl(上下左右)
單詞:w移至下一個單詞的詞首;e跳至當前或下一個單詞的詞尾;b跳至當前或前一個單詞的詞首
行內(nèi):0絕對行首;^行首的第一個非空白字符;$絕對行尾
行間:G文章末尾;3G第3行;gg文章開頭
翻屏:ctrl f【往后翻】;Ctrl b【往前翻】
2、 刪除、替換單個字符
x刪除光標位置字符;3x刪除光標開始3個字符;r替換光標位置字符
dw刪除一個單詞;4dw刪除光標開始的4個單詞;dd刪除光標所在行;5dd刪除光標開始的5行
3、復制粘貼剪切
yw復制一個單詞,p在該行粘貼單詞;yy復制整行,p在該行下方粘貼整行
dd剪切整行,p再粘貼整行;dw剪切一個單詞,p再粘貼一個單詞
4、 撤銷重做
u:撤銷;ctrl+r:重做撤銷的操作;.重復上一步的操作【假設(shè)先dd,再.,會再執(zhí)行dd命令】
1、 set設(shè)置
set nu
set nonu
set readonly #設(shè)置只讀文件,不能修改,只在當前環(huán)境有效,退出文件,再次打開,這個只讀就無效了
set noreadonly #取消只讀
2、 /查找
/after查找文檔中的after【可以找到所有的after】,n向下翻,N向上翻
:/after查找文檔中的after所在行【可以找到所有的after】,n向下翻,N向上翻
3、!執(zhí)行命令
比如:查找root目錄
:!ls /root/
4、 查找并替換
格式
【 :查找范圍s/查找的詞/要替換的詞/ 】
或者【:查找范圍s#查找的詞#要替換的詞# 】
或者【:查找范圍s%查找的詞%要替換的詞%】,
即分隔符可以是/、#、%
其中, 查找范圍 包括【.當前光標行】;【$末尾行】;【%全文】;【g一行內(nèi)全部替換】;【i忽略大小寫】
比如 【 :.,$s/after/before/】 表示在當前光標行【.】到末尾【$】這個范圍內(nèi),將after替換為before, 但是如果一行有多個after的話,只會把第一個after替換掉 。
比如 【 :%s/after/before/】 表示在全文,將after替換為before,但是如果一行有多個after的話,只會把第一個after替換掉。
比如 【:%s/after/before/g】 ,表示在全文,將after替換為before,但是 如果一行有多個after的話,會把該行所有after替換掉,因為在命令里面加了g 。
比如 【:%s/after/before/gi】 ,表示在全文,將after替換為before,且忽略大小寫并替換一行內(nèi)所有after。
比如 【 :%d或者dG】 ,表示刪除全文
比如 【:1,$-4d】 ,表示刪除第一行到倒數(shù)第5行的數(shù)據(jù)
比如 【:1,4y】 ,表示復制1到4行,再按p可粘貼這4行
:! killall -9 xxx
輸入冒號和驚嘆號就可以進入 shell 模式了。
運行這個命令,如果是殺 root 進程,需要有 root privilege