vi只是一個文本編輯程序
編輯模式到命令模式用i,a,o,r參數(shù)
編譯模式到命令模式或其他模式esc鍵
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
命令模式下:
h 向左 可以與數(shù)字一起用,如:30h:向左30位
j 向下
k 向上
l 向右
ctrl+f 向下移動一頁 相當(dāng)于page down鍵
ctrl+b 向上移動一頁 相當(dāng)于page up鍵
ctrl+d 向下半頁翻
ctrl+u 向上半頁翻
shift + 光標(biāo)移動到非空格符的下一列
shift - 光標(biāo)移動到非空格符的上一列
shift ^ 光標(biāo)移動到行首
n+空格鍵 n表示數(shù)字,比如20+空格鍵 表示移動到該光標(biāo)所在位置后20個字符處
0 數(shù)字0 :光標(biāo)移動到該行的最前面的字符處
$ 光標(biāo)移動到這一行的最后面字符處
H 光標(biāo)移動到這一屏幕的最上方哪一行
M 光標(biāo)移動到這個屏幕的中央哪一行
L 光標(biāo)移動到這一屏幕的最下方的哪一行
G 移動到這個檔案的最后一行
nG n為數(shù)字。移動到這個檔案的第n行,例如:20G則會移動到這個檔案的第20行
gg 移動到這個檔案的第一行 相當(dāng)于1G
n+Enter鍵 n為數(shù)字。光標(biāo)向下移動n行
x,X 在一行字當(dāng)中,x為向后刪除一個字符(相當(dāng)于del鍵)X為向前刪除一個字符(相當(dāng)于編輯模式下的backspace退格鍵)
nx n為數(shù)字,連續(xù)向后刪除n個字符,例如:10x
dd 刪除光標(biāo)所在的那一整列
dw 刪/剪切至詞尾(對光標(biāo)所在的單詞操作)
ndw 刪/剪切N個詞
ndd n為數(shù)字,刪除光標(biāo)所在的向下n列,例如20dd則是刪除20列
d1G 刪除光標(biāo)所在到第一行的所有數(shù)據(jù)
dG 刪除光標(biāo)所在到最后一行的所有數(shù)據(jù)
nd$ 刪除光標(biāo)所在處的后面n行
d0 數(shù)字0,刪除光標(biāo)所在處,到該行的最前面一個字符
yy 復(fù)制光標(biāo)所在的哪一行 p鍵粘貼
yw 復(fù)制光標(biāo)所在的那一詞 p鍵粘貼
nyw 復(fù)制光標(biāo)所在的n個詞 p鍵粘貼
nyy n為數(shù)字,復(fù)制光標(biāo)所在的向下n行,例如:20yy則是復(fù)制20列 p鍵粘貼
y1G 復(fù)制光標(biāo)所在列到第一列的所有數(shù)據(jù)
yG 復(fù)制光標(biāo)所在列到最后一列的所有數(shù)據(jù)
y0 復(fù)制光標(biāo)所在的那個字符到該行行首的所有數(shù)據(jù)
y$ 復(fù)制光標(biāo)所在的那個字符到該行行尾的所有數(shù)據(jù)
p,P p為將已復(fù)制的數(shù)據(jù)在光標(biāo)下一行貼上,P則為貼在光標(biāo)的上一行,例如:我目前光標(biāo)在第20行,且已經(jīng)復(fù)制了10行,則按下p后,那10行數(shù)據(jù)會貼在原來的20行之后,亦即21行開始貼,但如果按下P,那么原本的第20行會被推到30行
J 將光標(biāo)所在列與下一列的數(shù)據(jù)結(jié)合成同一列
c 重復(fù)刪除多個數(shù)據(jù),例如向下刪除10行 c1j
u 復(fù)原前一個動作
U 取消一行內(nèi)的所有更動
ctrl+r 重做上一行動作 ctrl+r與u都是很常用的按鍵
:e! 放棄所有變動,重新編輯
. 小數(shù)點,重復(fù)前一個動作的意思,如果您想要重復(fù)刪除,重復(fù)貼上等等動作,按下小數(shù)點.就好了
/word 向光標(biāo)以下尋找一個字符串為word
?word 向光標(biāo)以上尋找一個字符串名稱為word
n 英文按鍵n 代表重復(fù)前一個搜索動作,如前一個搜索/word 按下n鍵后會繼續(xù)向下搜索
N 英文按鍵N 剛好與n相反 為反向進(jìn)行前一個搜索 如?word 按住N鍵就是向下搜索
:n1,n2s/word1/word2/g -----n1 n2為數(shù)字,在第n1行與n2行之間尋找word1這個字符串,并將該字符串取代為word2 例如:在100到200行之間搜索test并取代為TEST則:【:100,200s/test/TEST/g】
:1,$s/word1/word2/g 從第一行到最后一行尋找word1字符串,并將該字符串取代為word2
:1,$s/word1/word2/gc 從第一行到最后一行尋找word1字符串,并將該字符串取代為word2 且在取代前顯示提示字符串給使用者確認(rèn)(confirm)是否需要取代,提示出現(xiàn),y:替換,n:不替換 a:全部替換 q:退出
vi 的編輯操作:
i,I 插入:在目前的光標(biāo)所在處插入輸入之文字,已存在的文字會后退,其中i為【從目前光標(biāo)所在處插入】,I為【在目前所在處的第一個非空格符處開始插入】
a,A a為【從目前光標(biāo)所在的下一個字符開始插入】,A為【從光標(biāo)所在行的最后一個字符處開始插入】
o,O 這是英文字母o的大小寫,o為【在目前光標(biāo)所在的下一行處插入新的一行】;O為在目前光標(biāo)所在處的上一行插入新的一行
r,R 取代:r會取代光標(biāo)所在的哪一個字符;R會一直取代光標(biāo)所在的文字,直到按下ESC為止
Esc 退出編輯模式,回到一般模式中
:w 將編輯的數(shù)據(jù)寫入硬盤檔案中
:w! 若檔案屬性為【只讀】時,強(qiáng)制寫入該檔案,不過,到底能不能寫入,還是跟你對檔案的檔案權(quán)限有關(guān)
:q 離開
:q! 若曾修改過檔案,又不想儲存,使用!為強(qiáng)制離開不儲存檔案
:wq 儲存后離開,若為:wq!則為強(qiáng)制儲存后離開
:x 保存退出
:e! 將檔案還原到最原始的狀態(tài)
ZZ 若檔案沒有改動,則不儲存離開,若檔案已經(jīng)經(jīng)過改動,則存儲后離開
:w 【filename】 將編輯的數(shù)據(jù)存儲成另一個檔案(類似另存新檔)
:r 【filename】 在編輯的數(shù)據(jù)中,讀入另一個檔案的數(shù)據(jù),亦即將【filename】這個檔案內(nèi)容加到光標(biāo)所在行后面
:n1,n2 w【filename】 將n1到n2行的內(nèi)容存儲成filename這個檔案
:!command 暫時離開vi到指令列模式下執(zhí)行command的顯示結(jié)果!例如【:! ls/home】即可在vi當(dāng)中察看/home地下ls輸出的檔案信息
set nu 顯示行號,設(shè)定之后,會在每一行的前綴顯示該行的行號
set nonu 與set nu相反,為取消行號
vi 高級命令
分割窗口:
vi -o file1 file2 水平分割窗口編輯兩個文件
vi -O file1 file2 垂直分割窗口編輯兩個文件
|