2.文本輸入模式(Input Mode) :在指令模式下(Command Mode)按a/A鍵、i/I鍵、o/O鍵進(jìn)入文本模式
3.行末模式(Last line Mode) :末行模式主要進(jìn)行一些文字編輯輔助功能,比如字串搜索、替代、保存文件等操作
指令模式(Command Mode) 下輸入 a、i、o進(jìn)入文本輸入模式(Input Mode)
文本輸入模式(Input Mode)下按 ESC 進(jìn)入指令模式(Command Mode)
指令模式(Command Mode)下輸入 : 進(jìn)入末行模式(Last line Mode)
末行模式(Last line Mode)下指令錯誤則返回指令模式(Command Mode)
VI命令常用用法
這里介紹的都是最基本最常用的vi命令~折騰vps夠用了,比如退出vi的命令等等~
0、進(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編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)filename
vi filename....filename :打開多個文件,依次進(jìn)行編輯
1、指令模式(Command Mode)
PageDn ----- 向下移動一頁
PageUp ----- 向上移動一頁
0 -----光標(biāo)移動至行首
h -----光標(biāo)左移一格
l -----光標(biāo)右移一格
j -----光標(biāo)下移一行
k -----光標(biāo)上移一行
$+A-----將光標(biāo)移動到該行最后
d+方向鍵 -----刪除文字
dd -----刪除整行
pp -----整行復(fù)制
r -----修改光標(biāo)所在的字符
S -----刪除光標(biāo)所在的列,并進(jìn)入輸入模式
2、文本輸入模式(Input Mode)
a -----在光標(biāo)后開始插入
A -----在行尾開始插入
i -----從光標(biāo)所在位置前面開始插入
I -----從光標(biāo)所在列的第一個非空白字元前面開始插入
o -----在光標(biāo)所在列下新增一列并進(jìn)入輸入模式
O -----在光標(biāo)所在列上方新增一列并進(jìn)入輸入模式
ESC -----返回命令行模式
3、末行模式(Last line Mode)
:q -----結(jié)束Vi程序,如果文件有過修改,先保存文件
:q! -----強(qiáng)制退出Vi程序(不保存修改)
:wq -----保存修改并退出程序
ZZ-----保存修改并退出程序(在沒有開啟Caps Lock時(shí)按住Shift鍵再按兩個z鍵)
:set num -----設(shè)置行號
搬移與復(fù)制
==========
利用 delete 及 put 指令可完成資料搬移之目的。
利用 yank 及 put 指令可完成資料復(fù)制之目的。
yank 和 delete 可將指定的資料復(fù)制到記憶體緩沖區(qū),而藉由 put 指令
可將緩沖區(qū)內(nèi)的資料復(fù)制到螢?zāi)簧稀?/p>
例:
搬移一行 .在該行執(zhí)行 dd
.游標(biāo)移至目的地
.執(zhí)行 p
復(fù)制一行 .在該行執(zhí)行 yy
.游標(biāo)移至目的地
.執(zhí)行 p
.指令重復(fù)
=========
在指令模式中,可在指令前面加入一數(shù)字 n,則此指令動作會重復(fù)執(zhí)行 n
次。
例:
刪除10行 .10dd
復(fù)制10行 .10yy
.游標(biāo)移至目的地
.p
指標(biāo)往下移10行 .10j
..取消前一動作(Undo)
===================
即復(fù)原執(zhí)行上一指令前的內(nèi)容。
u 恢復(fù)最後一個指令之前的結(jié)果。
U 恢復(fù)游標(biāo)該行之所有改變。
..搜尋
=====
在vi中可搜尋某一字串,使游標(biāo)移至該處。
/字串 往游標(biāo)之後尋找該字串。
?字串 往游標(biāo)之前尋找該字串。
n 往下繼續(xù)尋找下一個相同的字串。
N 往上繼續(xù)尋找下一個相同的字串。
..資料的連接
===========
J 句子的連接。將游標(biāo)所在之下一行連接至游標(biāo)該行的後面。
若某行資料太長亦可將其分成兩行,只要將游標(biāo)移至分開點(diǎn),進(jìn)入輸入模式
(可利用 a、i等指令)再按《Enter》即可。
..環(huán)境的設(shè)定
===========
?。簊et nu 設(shè)定資料的行號。
?。簊et nonu 取消行號設(shè)定。
?。簊et ai 自動內(nèi)縮。
?。簊et noai 取消自動內(nèi)縮。
自動內(nèi)縮(automatic indentation)
在編輯文件或程式時(shí),有時(shí)會遇到需要內(nèi)縮的狀況,『:set ai』即提供自
動內(nèi)縮的功能,用下例解釋之:
.vi test
.(進(jìn)入編輯視窗後)
this is the test for auto indent
《Tab》start indent ← :set ai (設(shè)自動內(nèi)縮)
《Tab》data
《Tab》data
《Tab》data ← :set noai (取消自動內(nèi)縮)
the end of auto indent.
.注: 可刪除《Tab》字元。
從當(dāng)前位置刪除到行尾
d$
從當(dāng)前位置復(fù)制到行尾
y$ 如果要粘貼到其他地方 p 就可以了
13.
:%s/old_word/new_word/g
這個指令是于在整個文件中替換特定字符串
14.光標(biāo)控制
k:上移 nk 上移n行
j:下移 nj 下移n行
將光標(biāo)移到第n行,按下 mk
將光標(biāo)移到第m行,按下 "ay'k
即將第n到m的行存到a寄存器,以此類推,b,c........寄存器等
這樣就可以將你常用的需要復(fù)用的內(nèi)容粘貼到不同的寄存器中以備用
想粘貼到某處,直接將光標(biāo)移到某地,按下 ‘ap 即可,以此類推,b,c........寄存器等
在當(dāng)前屏幕中
H 跳到第一行
M 跳到中間一行
L 跳到最后一行
15.
表8-2 刪除命令
刪除命令操作
d l 刪除當(dāng)前字符(與x命令功能相同)
d 0 刪除到某一行的開始位置
d ^ 刪除到某一行的第一個字符位置(不包括空格或TA B字符)
d w 刪除到某個單詞的結(jié)尾位置
d 3 w 刪除到第三個單詞的結(jié)尾位置
d b 刪除到某個單詞的開始位置
d W 刪除到某個以空格作為分隔符的單詞的結(jié)尾位置
d B 刪除到某個以空格作為分隔符的單詞的開始位置
d 7 B 刪除到前面7個以空格作為分隔符的單詞的開始位置
d) 刪除到某個語句的結(jié)尾位置
d 4) 刪除到第四個語句的結(jié)尾位置
d( 刪除到某個語句的開始位置
d } 刪除到某個段落的結(jié)尾位置
d { 刪除到某個段落的開始位置
d 7 { 刪除到當(dāng)前段落起始位置之前的第7個段落位置
d d 刪除當(dāng)前行
d /t e x t 刪除從文本中出現(xiàn)“ t e x t”中所指定字樣的位置,一直向前直到下一個該字樣所出現(xiàn)的
位置(但不包括該字樣)之間的內(nèi)容
d fc 刪除從文本中出現(xiàn)字符“c”的位置,一直向前直到下一個該字符所出現(xiàn)的位置(包括
該字符)之間的內(nèi)容
d tc 刪除當(dāng)前行直到下一個字符“ c”所出現(xiàn)位置之間的內(nèi)容
D 刪除到某一行的結(jié)尾
d $ 刪除到某一行的結(jié)尾
5 d d 刪除從當(dāng)前行所開始的5行內(nèi)容
d L 刪除直到屏幕上最后一行的內(nèi)容
d H 刪除直到屏幕上第一行的內(nèi)容
d G 刪除直到工作緩存區(qū)結(jié)尾的內(nèi)容
d 1 G 刪除直到工作緩存區(qū)開始的內(nèi)容
替換命令
替換命令操作
s 將當(dāng)前字符替換為一個或多個字符
S 將當(dāng)前行替換為一個或多個字符
5 s 將從當(dāng)前字符開始的5個字符替換為一個或多個字符
vi替換使用規(guī)則:
:g/s1/s/s2/s3/g
第一個g表示對每一個包括s1的行都進(jìn)行替換,第二個g表示對每一行包括s1的行所有的s2都用s3替換
s表示替換,s2是要被替換的字符串,他可以和s1相同(如果相同的話用//代替),s3是替換字符串