Vi編輯器入門
1、vi的工做模式shell
vi有兩種基本的工做模式:命令(編輯)模式和文本輸入模式。編輯器
命令模式:vi初始啓動時進入命令模式。它不顯示用戶輸入,只會被解釋執行。spa
文本輸入模式:它就顯示用戶的輸入,只是做爲文本寫入到用戶的文件中。命令行
狀態行:屏幕底部的一行,一般爲第24行,vi在該行上反饋編輯操做的結果。錯誤信息或其餘一些信息會在狀態行上顯示出來,vi還會在第24行上顯示那些以冒號、斜槓或問號開頭的命令。3d
2、命令模式unix
注意:blog
1,若是想使用光標移動鍵,就必須使vi處於命令模式。ci
2,當vi編輯器處於命令模式時,大部分命令在按下鍵時就會啓動,所以不須要使用回車鍵來指明命令行的結束。get
vi的光標移動鍵鍵 功能博客
h或[←] 將光標向左移動一位
j 或[↓] 將光標向下移動一位
k或[↑] 將光標向上移動一位
l 或[→] 將光標向右移動一位
$ 將光標移到當前行的行尾
w 將光標向右移動一個字
b 將光標向左移動一個字
e 將光標移到字尾
0(零) 將光標移到當前行的行首
[Reuturn]鍵 將光標移到下一行的行首
[Spacebar]鍵 將光標向右移動一位
[Backspace]鍵 將光標向左移動一位
命令模式下vi編輯器的文本修改鍵
鍵 功能
x 刪除光標位置指定的字符
dd 刪除光標所在的行
u 撤銷最近的修改
U 撤銷對當前行作的全部修改
r 替換光標位置上的一個字符
R 替換從光標位置開始的字符,同時改變vi到文本輸入模式
.(點) 重複上一次的修改
3、文本輸入模式
切換到文本輸入模式的命令鍵
命令鍵 功能
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 標識域爲從光標位置前到當前字首
4、命令的組合使用
在unix中許多的命令是能夠組合使用的,這樣就顯出了 unix的強大之處。下面就列一些經常使用基本的文本處理的組合命令
◎使用刪除操做符和域控制鍵
★實例1:刪除從光標位置開始到當前行尾的文本,按d$
★實例2:刪除從光標位置以前到當前行首的文本,按d0
★實例3:刪除從光標位置後的一個字,按dw
★實例4:刪除光標位置後的多個字(例如,3個字),按3dw
★實例5:刪除到字尾,按de
★實例6:刪除到前一個字的字首,按db
◎使用移出操做符和域控制鍵
★實例1:複製從當前光標位置開始到當前行尾的文本,按y$
★實例2:複製從當前光標位置開始到當前行首的文本,按y0
◎使用修改操做符和域控制鍵
修改操做符c能夠同時刪除和移出操做符同樣使用域控制鍵。c操做符與其餘操做符不一樣的是它將vi從命令模式轉換到文本輸入模式。
Vi編輯器的某些版本用一個標誌來標記將被刪除的最後一個字符。這個標誌一般是美圓符($),它覆蓋將被刪除的最後一個字符。
★ 實例:使用修改操做符和域控制鍵來修改一個字,按cw.
5、在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]鍵。
6、光標定位鍵
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%
7、設置vi的環境
部分vi環境選項
選項 縮寫 功能
autoindent ai 將新行與前一行的行首對齊
ignorecase ic 在搜索選項中忽略大小寫
magic 容許在搜索時使用特殊字符
number nu 顯示行號
report 通知用戶上一個命令影響的行號
scroll 設定[Ctrl-d]命令翻動的行數
shiftwidth sw 設置縮進的空格數,與autoindent選項一塊兒使用
showmode smd 在屏幕的右角顯示vi編輯器的模式
terse 縮短錯誤信息
wrapmargin wm 設置右邊界爲指定的字符數
8、行長和行迴繞
用戶的終端一般有80列。當輸入文本到達行尾時,開始一個新行。
wrapmargin選項:當用戶輸入文本到達距右邊界指定的字符數時,wrapmargin選項使vi編輯器斷開輸入的文本。例如,要設置wrapmargin爲10(其中10爲距離屏幕右邊界的字符數),輸入:set wrapmargin=10並按[Return]鍵。則輸入到達70列時,vi編輯器開始新行。就如同用戶按了[Return]鍵同樣了。
wrapmargin選項的默認值是0(零)。要關閉wrapmargin選項,輸入:set wrapmargin=0並按[Return]鍵
9、縮寫和宏
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行文本。
10、最後的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! //強制保存退出
本文來自: