1、命令模式(command mode)—執行命令
在該模式中,可以輸入命令來執行許多種功能。控制屏幕光標的移動,字符、字或行的刪除,移動復制某區段及進入Insert mode下,或者到 last line mode。
2、輸入模式(Insert mode)—輸入文本
vi被運行時,通常處在命令模式下,鍵入以下命令 可以使vi退出命令模式,進入輸入模式:I(i)、A(a)、O(o)。
3、末行模式(last line mode)—執行待定命令
將文件保存或退出vi,也可以設置編輯環境,如尋找字符串、列出行號……等。不過一般我們在使用時把vi簡化成兩個模式,就是將末行模式(last line mode)也算入命令行模式command mode)。
1. vi的啟動
輸入vi命令后,便進入全屏幕編輯環境,此時的狀態為命令模式。
(1) vi
進入vi的一個臨時緩沖區,光標定位在該緩沖區第1行第1列的位置上。
(2) vi file1
如果file1文件不存在,將建立此文件;如該文件存在,則將其拷貝到一個臨時緩沖區。光標定位在該緩沖區第1行第1列的位置上。
(3) vi + file1
如果file1文件不存在,將建立此文件;如該文件存在,則將其拷貝到一個臨時緩沖區。光標定位在文件最后1行第1列的位置上。
(4) vi +N file1(N:為數字)
如果file1文件不存在,將建立此文件;如該文件存在,則將其拷貝到一個臨時緩沖區。光標定位在文件第N行第1列的位置上。
(5) vi +/string file1
如果file1文件不存在將建立此文件;如該文件存在則將其拷貝到一個臨時緩沖區。光標定位在文件中第一次出現字符串string的行首位置。
2. 退出vi(末行模式(last line mode))
建議在退出vi前,先按ESC鍵,以確保當前vi的狀態為命令方式,然后再鍵入“:”(冒號),輸入下列命令,退出vi。
(1) :w
將編輯緩沖區的內容寫入文件,則新的內容就替代了原始文件。這時並沒有退出vi,必須進一步輸入下述命令才能退出vi:
:w filename(存入指定文件)
:q
(2) :wq
即將上面的兩步操作可以合成一步來完成,先執行w,后執行q。
3、在文件中移動光標
- h:向左移動一個字符
- l:向右移動一個字符
- j:向下移動一行
- k:向上移動一行
- ^(即Shift+6):移動到當前行的開頭處
- $(即Shift+4):移動到當前行的結尾處
- H(大寫):使光標移動到屏幕的頂部
- M(大寫):使光標移動到屏幕的中間
- L(大寫):使光標移動到屏幕的底部
- Ctrl+b:上滾一屏。
- Ctrl+f:下滾一屏。
- Ctrl+d:下滾半屏。
- Ctrl+u: 上滾半屏。
4、撤消更改
(1)撤消前一個命令:在最后一個命令之后立即輸入u來撤消該命令
(2)重復某個命令:“.”
(3)撤消對一行的更改:輸入U來撤消你對一行所做的所有更改,這個命令只有在你沒將光標移動到該行以外時才生效。
5、刪除文本
(1)刪除一個字符:
●為刪除一個字符,需將光標放置在要刪除的字符上並輸入x
●為刪除光標之前(其左邊)的一個字符,需輸入X
(2)刪除一個詞或詞的部分內容:
●為刪除一個詞,需將光標放置到該詞的開頭並輸入dw
●為刪除詞的部分內容,需將光標放置到該詞要保存部分的右邊。輸入dw來刪除該詞余下的部分
(3)刪除一行:將光標放置到該行的任意處並輸入dd
(4)刪除多行:ndd
(5)刪除行的部分內容:將光標放置到該行要保存部分的右邊,並輸入D。為刪除光標左邊的所有內容,須將光標放置到該行要刪除部分的右邊,並輸入d0(d-零)。
(6)刪除到文件的結尾:為刪除從當前行到文件結尾的所有內容,需輸入dG
6、復制和移動文本
●復制一行命令:yy
●粘貼命令:p
●移動文本:先將要移動的部分用刪除命令刪除,然后再粘貼就可以了
●復制指定文件的內容 : r filename
7、查找一個字符串
●輸入/,並在/后面輸入要查找的串,然后按下回車
●輸入“n”跳轉到該串的下一個出現處
●輸入“N”跳轉到該串的上一個出現處
8、替換一個字符串
●在一行內替換頭一個字符串old為新的字符串new :s/old/new
●在一行內替換所有的字符串old為新的字符串new :s/old/new/g
●在兩行內替換所有的字符串old為新的字符串new :#,#s/old/new/g
●在文件內替換所有的字符串old為新的字符串new :%s/old/new/g
●進行全文替換時詢問用戶確認每個替換需添加c選項 :%s/old/new/gc
9、設置vi
●顯示行號 :set number
●取消行號顯示 :set nonumber
●設置顯示用戶模式 :set showmode
●設置文件只讀 :set readonly
(轉載的)