Vi編輯器入門
Vi編輯器入門
一、vi的工作模式
vi有兩種基本的工作模式:命令(編輯)模式和文本輸入模式。
命令模式:vi初始啟動時進入命令模式。它不顯示用戶輸入,只會被解釋執行。
文本輸入模式:它就顯示用戶的輸入,只是作為文本寫入到用戶的文件中。
狀態行:屏幕底部的一行,通常為第24行,vi在該行上反饋編輯操作的結果。錯誤信息或其他一些信息會在狀態行上顯示出來,vi還會在第24行上顯示那些以冒號、斜杠或問號開頭的命令。
二、命令模式
註意:
1,如果想使用光標移動鍵,就必須使vi處於命令模式。
2,當vi編輯器處於命令模式時,大部分命令在按下鍵時就會啟動,因此不需要使用回車鍵來指明命令行的結束。
vi的光標移動鍵鍵 功能
h或[←] 將光標向左移動一位
j 或[↓] 將光標向下移動一位
k或[↑] 將光標向上移動一位
l 或[→] 將光標向右移動一位
$ 將光標移到當前行的行尾
w 將光標向右移動一個字
b 將光標向左移動一個字
e 將光標移到字尾
0(零) 將光標移到當前行的行首
[Reuturn]鍵 將光標移到下一行的行首
[Spacebar]鍵 將光標向右移動一位
[Backspace]鍵 將光標向左移動一位
命令模式下vi編輯器的文本修改鍵
鍵 功能
x 刪除光標位置指定的字符
dd 刪除光標所在的行
u 撤銷最近的修改
U 撤銷對當前行做的所有修改
r 替換光標位置上的一個字符
R 替換從光標位置開始的字符,同時改變vi到文本輸入模式
.(點) 重復上一次的修改
三、文本輸入模式
切換到文本輸入模式的命令鍵
命令鍵 功能
i 在光標左側輸入正文
I 在光標所在行的開頭輸入正文
a 在光標右側輸入正文
A 在光標的所在行的未尾輸入正文
o 在光標所在行的下一行增添新行,並且光標位於新行的開頭
O 在光標所在行的上一行增添新行,並且光標位於新行的開頭
關閉文件
● 按[Esc]鍵,確保vi處於命令模式。
● 輸入 : 將提示符放到屏幕底部的狀態行上。
● 輸入q![Return],該命令不保存改變並退出vi。按[!]鍵表示確認放棄修改。
當vi處於文本編輯器模式時[Return]的使用:
● 如果光標在行尾,光標的右邊沒有文本按[Return]鍵將會在當前行的下面添加一個空行
● 如果光標正好在當前行的第一個字符上,按[Return]鍵將會在當前行的上面添加一空行
● 如果光標在本行的其他位置,並且它的右邊有文本,按[Return]鍵會把該行分成兩行
編輯多個文件
● 編輯另一個文件:vi 可能同時打開多個文件,另一種方法是用:e(edit)
● 讀另一個文件 :在vi編輯器命令模式下,輸入:r,後面跟文件名,並按[Return]鍵,:r命令將指定文件的副本放到緩沖區中光標位置之後。指定的文件成為當前文件的一部分。
● 寫入另一個文件:vi編輯器允許用戶將當前編輯文件的一部分寫(保存)到另一個文件中。首先,用戶需要指出希望保存的行的範圍,然後用重排文本
vi編輯器的剪切和粘貼鍵
鍵 功能
d 刪除指定位置的文本,並保存到臨時緩沖區中。
y 復制指定位置的文本到臨時緩沖區。
P 將指定緩沖區的內容放到當前光標位置之上
p 將指定緩沖區的內容放到當前光標位置之下
c 刪除文件並使vi進入文本輸入模式,這是刪除和插入命令的組合
vi操作符的域
部分vi域控制鍵
域 功能
$ 標識域為從光標位置開始到當前行尾
0(零) 標識域為從光標位置前到當前行首
e或w 標識域為從光標位置開始到當前字尾
b 標識域為從光標位置前到當前字首
四、命令的組合使用
在unix中許多的命令是可以組合使用的,這樣就顯出了 unix的強大之處。下面就列一些常用基本的文本處理的組合命令
◎使用刪除操作符和域控制鍵
★實例1:刪除從光標位置開始到當前行尾的文本,按d$
★實例2:刪除從光標位置之前到當前行首的文本,按d0
★實例3:刪除從光標位置後的一個字,按dw
★實例4:刪除光標位置後的多個字(例如,3個字),按3dw
★實例5:刪除到字尾,按de
★實例6:刪除到前一個字的字首,按db
◎使用移出操作符和域控制鍵
★實例1:復制從當前光標位置開始到當前行尾的文本,按y$
★實例2:復制從當前光標位置開始到當前行首的文本,按y0
◎使用修改操作符和域控制鍵
修改操作符c可以同時刪除和移出操作符一樣使用域控制鍵。c操作符與其他操作符不同的是它將vi從命令模式轉換到文本輸入模式。
Vi編輯器的某些版本用一個標誌來標記將被刪除的最後一個字符。這個標誌通常是美元符($),它覆蓋將被刪除的最後一個字符。
★ 實例:使用修改操作符和域控制鍵來修改一個字,按cw.
五、在vi中使用緩沖區
● 數字編號緩沖區:vi編輯器使用9個臨時緩沖區,編號從1到9。每次刪除或復制的文本都放在這些緩沖區中,用戶指定緩沖區號就可以訪問任何一個緩沖區。每次新刪除或復制的文本替換緩沖區以前的內容。這意味著緩沖區1總是保留最近被修改的內容。
用put操作符,並在它前面加上緩沖區號就可以找回數字編號緩沖區的內容。指定緩沖區的格式可以表示為:
雙引號+n(其中,n是緩沖區號,取1到9)+(p或P)
● 字母編號緩沖區:vi編輯器還使用26個命名緩沖區,這些緩沖區用小寫字母a到z來命名。用戶通過指定緩沖區我名字引用它們。這些緩沖區同數字緩沖區類似,不同之處在於,每次用戶在文件中刪除或移出文本時,vi編輯器不自動改變緩沖區的內容。用戶可以將刪除或復制的文本存到指定的緩沖區,然後用put操作符將指定緩沖區的文本復制到文件的其他地方。
實例:完成下列操作,練習使用命令對指定的緩沖區進行操作。
□ 輸入”wdd,刪除當前行,將它的副本保存到緩沖區w”。
□ 輸入”wp,將緩沖區w的內容復制到光標位置”。
□ 輸入”z7yy,復制7行到緩沖區z”。
□ 輸入”zp,將緩沖區z的內容(7行)復制到光標位置”。
註意:1.這些命令不會顯示在屏幕上。
2.字母編號緩沖區用小寫字母a到z命名
3.使用這些命令不需要按[Return]鍵。
六、光標定位鍵
vi的翻頁鍵
鍵 功能
[Ctrl-d] 將光標向下移動到文件尾,通常每次移動12行
[Ctrl-u] 將光標向上移動到文件頭,通常每次移動12行
[Ctrl-f] 將光標向下移動到文件尾,通常每次移動24行
[Ctrl-b] 將光標向上移動到文件頭,通常每次移動24行
定位光標:使用的G命令,前面加上希望光標將位於的行號。
實例:完成下列操作,使第1000行成為當前行。
□ 輸入1000G,將光標移到第1000行上。
□ 輸入1G,將光標移到第1行上。
□ 輸入G,將光標移到文件尾。
另一種有用的命令是[Ctrl-g],它告訴用戶當前行號。例如,在命令模式下按[Ctrl-g]鍵,vi編輯器顯示類似於以下的信息:
“myfirst”line 30 of 90 – 30%
七、設置vi的環境
部分vi環境選項
選項 縮寫 功能
autoindent ai 將新行與前一行的行首對齊
ignorecase ic 在搜索選項中忽略大小寫
magic 允許在搜索時使用特殊字符
number nu 顯示行號
report 通知用戶上一個命令影響的行號
scroll 設定[Ctrl-d]命令翻動的行數
shiftwidth sw 設置縮進的空格數,與autoindent選項一起使用
showmode smd 在屏幕的右角顯示vi編輯器的模式
terse 縮短錯誤信息
wrapmargin wm 設置右邊界為指定的字符數
八、行長和行回繞
用戶的終端通常有80列。當輸入文本到達行尾時,開始一個新行。
wrapmargin選項:當用戶輸入文本到達距右邊界指定的字符數時,wrapmargin選項使vi編輯器斷開輸入的文本。例如,要設置wrapmargin為10(其中10為距離屏幕右邊界的字符數),輸入:set wrapmargin=10並按[Return]鍵。則輸入到達70列時,vi編輯器開始新行。就如同用戶按了[Return]鍵一樣了。
wrapmargin選項的默認值是0(零)。要關閉wrapmargin選項,輸入:set wrapmargin=0並按[Return]鍵
九、縮寫和宏
vi編輯器為用戶提供一些捷徑使輸入更簡單,:ab和:map兩個命令就起這個作用。
● 編寫操作符:ab(abbreviateion)命令可以給任何字符指定縮寫。
例如,要縮寫經常在本書中使用的UNIX Operating System為uno,輸入:ab uno UNIX Operating System.如果uno是另一字的一部分,如unofficial,,則不會發生擴展。
要取消縮寫,使用unab(unabbreviate)操作符。例如,要取消uno縮寫,輸入:unab uno並按[Return]鍵。
● 宏操作符(map)可以指定單個鍵代表鍵序列,
例如,要指定命令5dd(刪除5行)為q,輸入: map q 5dd並按[Return]鍵。
用戶也可以在map命令中指定終端的功能鍵。在這種情況下,輸入#n作為鍵名,其中n指功能鍵號。例如,將5dd指定給[F2]鍵,vi刪除5行文本。
十、最後的vi命令――1運行shell命令
用戶可以在vi命令行中運行UNIX的shell命令。這一方便的特性允許用戶暫時將vi編輯器放在一邊,轉而執行shell命令。!(驚嘆號)提示vi下一個命令是UNIX的shell命令。如果需要,用戶也可以查看shell命令的執行結果並將其加入到文本中。使用: r(read)命令後面跟!,可將命令的結果插入到編輯文件中。
實例:下面的命令序列顯示!的使用方式。
□ 輸入: ! ls
□ 輸入: ! who
□ 輸入: !date
□ 輸入: !pwd
□ 輸入: r ! date
□ 輸入:r ! cal 1 2005
□ 輸入:r ! vi mylast
2行連接
使用J命令連接兩行。J命令將當前行下面的一行連接到當前行上,放到光標位置之後。如果兩行連接產生一個長行,vi將其按屏幕進行折行。
實例:完成下列操作即可連接兩行。
□ 使用光標移動鍵將光標放在第一行行尾。
□ 按J鍵,vi將當前行下面的一行連到當前行上。
3搜索和替換
vi的搜索命令(/和?)
實例:下面的命令序列演示vi的搜索和替換功能
□ 輸入:/UNIX並按[Return]鍵,向下搜索找到第一個UNIX。
□ 輸入cwunix並按[Return]鍵,將UNIX替換為unix/
□ 輸入n,找到下一個UNIX。
4文件恢復選項
用-r選項啟動vi編輯器崩潰時正在編輯的文件。例如,下面的命令可以恢復myfirst
$ vi –r myfirst [Return]…………………………………啟動vi的恢復選項
如果不提供文件名進行編輯,或不記得當時編輯的文件名,可輸入vi –r命令
$ vi –r [Return]
vi 有三種模式:命令模式;插入模式;末行模式。
打開編輯器默認就是命令模式,可以通過輸入命令進入插入模式,從插入模式返回命令模式要按Esc鍵,在命令模式下輸入 :(冒號)切換到末行模式。
插入相關命令:
? a //在光標後插入文本
? i //在光標前插入文本
? o //在當前行下面插入一行
? O //在當前行上面插入一行
? I //在當前行開頭插入文本
? A //在當前行末尾插入文本
光標移動相關命令:
? Home //移動到光標所在行的最前面
? End //移動到光標所在列的最後面
? b //移動到下個字的第一個字母
? w //移動到上個字的第一個字母
? H //移動到屏幕的第一列
? M //移動到屏幕的中間列
? L //移動到屏幕的最後列
? fx //向右移動到x字符上
? Fx //向左移動到x字符
? Pageup //向上翻頁
? Pagedown //向下翻頁
? shift+g // 跳到文件尾
? ddp //和下一行交換
刪除相關命令:
? x //刪除光標所在處的一個字符
? dw //刪除光標所在處向後的一個單詞
? D //刪除光標處至行尾的所有字符
? dd //刪除光標所在行,可以加數字表示要刪除的行數
替換命令:
? r //替換光標所在處的一個字符
? R //向右連續替換
? cw //替換光標向右的一個單詞
查找命令:
? /ac //向光標下文查找ac,按n向下查找下一個按N回到上一個
? ?ac //向光標上文查找ac,按n向上查找下一個按N回到上一個
復制與粘貼相關命令:
? yw //將光標向右一個單詞拷入剪貼板
? y$ //將光標至行尾的字符拷入剪貼板
? yy //將當前行拷入剪貼板
? p // 將剪貼板中的內容粘貼在光標後
文件保存及退出相關命令:
? :q // 不保存退出
? :q! // 不保存強制性退出
? :w //保存編輯不退出
? :wq //保存並退出
? :wq! //強制保存退出
本文來自:
Stone.Wang的博客
http://blog.sina.com.cn/stonestore
Vi編輯器入門