Linux vi的一些操作筆記

Linux vi的一些操作筆記

2006-10-31 15:28:50|  分類: 技術研究 |  標籤:網絡   |字號 訂閱

它和WINDOWS下的編輯器是不一樣的,基本上所有的操作都不需要先選擇,再操作。

 

vi(Visual)是以視覺爲導向的全屏幕編輯器、共分爲三種方式(mode):

 

command方式 任何輸入都會作爲編輯命令,而不會出現在屏幕上,若輸入錯誤則有"岬"的聲音;任何輸入都引起立即反映 。
insert方式 任何輸入的數據都置於編輯寄存器。在command方式下輸入(I,a,A等),可進入insert方式,insert方式下按ESC,可跳回command方式。
escape方式 以":"或者"/"爲前導的指令,出現在屏幕的最下一行,任何輸入都被當成特別指令。

 

vi filename 進入vi並讀入指定名稱的文件(新、舊文件均可)。
vi +n filename 進入vi並且由文件的第幾行開始。
vi +filename 進入vi並且由文件的最後一行開始。
vi + /word filename 進入vi並且由文件的word這個字開始。
vi filename(s) 進入vi並且將各指定文件列入名單內,第一個文件先讀入。
vedit 進入vi並且在輸入方式時會在狀態行顯示"INSERT MODE"。

編輯數個文件(利用vi filename(s))進入vi後)
:args 顯示編輯名單中的各個文件名。
:e# 讀入編輯名單內的前一個文件。
:n 讀入編輯名單中的下一個文件。
:rew 讀入編輯名單中的第一個文件。
:e file 讀入另一個文件進vi(此文件可不在編輯名單內),若原文件經修改還沒有存檔,則應先以: w 存檔。
:e! File 強迫讀入另一個文件進入vi,原文件不作存檔動作。
存儲及退出vi
:wq 把編輯內容存入文件,並退出vi。
:x 把編輯內容存入文件,並退出vi。
ZZ 把編輯內容存入文件,並退出vi。
:w filename 把編輯內容存入名爲filename的新文件,但不退出vi。
:q 若文件未修改,可退出vi;文件若經修改而又未保存,這樣就無法退出vi,用戶必須先以:w來保存編輯內容再以:q退出vi,或是以:q!來放棄編輯內容。
:q! 放棄編輯內容,使文件保持原樣,並退出vi。
:sh 暫時退出vi,這時UNIX建立一個新的shell給你,當你完成需要執行的指令後,可使用[Ctrl]+[D]返回原來編輯的地方。
[Ctrl]+[Z] 暫時退出vi,回到上一層的shell,將當前執行的vi移至後臺,當工作完成後,可用指令fg將剛纔被擱置的vi從後臺重新調回前臺。
加數據指令
a 在光標位置的右邊插入文字,結束時候按ESC鍵。
A 在光標所在的那一行的結尾處插入文字。
I 在光標所在的那一行的開頭處插入文字。
i 在光標位置處插入文字,結束時候按ESC鍵。
o 光標位置的下方開啓新的一行。
O 光標位置的上方開啓新的一行。
刪除指令
x 刪除光標所在的字符。
#x 刪除光標所在處之後(含光標)#個字符,如3x。
X 刪除光標所在處之前一個字符。
#X 刪除光標所在處之前(含光標)#個字符,如3X。
dw 刪除一個單詞(Word)。
#dw 刪除#個單詞(Word)。
D 刪除自光標所在處到此行結尾的全部字符,同d$。
dd 刪除光標所在的整行。
#dd 刪除自光標所在處開始向下#行,如5dd。
dG 由現在光標所在處刪除至文件結尾。
:start,endd 刪除文件的第start到end行。
光標移動
j 光標下移一個字符。
k 光標上移一個字符。
l 光標右移一個字符。
^或0 將光標移至行首。
$ 將光標移至行尾。
w 將光標往右移動一個字。
b 將光標往左移動一個字。
nh 往左移n位。
nl或者spacebar 往右移n位。
nw 右移n個字組,標點符號屬於字組。
nW 右移n個字組,標點符號不屬於字組。
nb 左移n個字組,標點符號屬於字組。
nB 左移n個字組,標點符號不屬於字組。
nk 向上移n行。
n+ 向上移n行,光標在該行的起始。
ni 向下移n行。
n- 向下移n行,光標在該行的起始。
e 將光標移至目前光標所在字的最後一個字符。
H 移到屏幕的左上角。
M 移到屏幕的中間行開頭。
L 移到屏幕的最後一行。
:$ 將光標直接移到文件尾。
G 將光標直接移到文件尾。
:# 將光標直接移到第#行。
[ 移到文件開始位置。
] 移到文件結束位置。
#G 將光標直接移到第#行。
[Ctrl]+[d] 光標向下捲動半個屏幕,通常是12行。
[Ctrl]+[u] 光標向上捲動半個屏幕,通常是12行。
[Ctrl]+[f] 光標向上捲動一個屏幕,通常是24行。
[Ctrl]+[b] 光標向下捲動一個屏幕,通常是24行。
查找替換
/test 從光標位置往下找字串。
/^test 查找字符串,且此字符串必須出現在一行的行首。
/test$ 查找字符串,且此字符串必須出現在一行的行尾。
?text 從光標位置往上找字串text。
r 替換一個字符。
cw 替換整個字符串。
cc 替換整行字符串。
s 查找並全部替換。
n 繼續找下一個字串(在輸入上面的尋找指令之後使用)。
複製與剪切
區塊行數 dd 將光標所在位置下的區塊剪切,按"p"鍵粘貼到新位置。
區塊行數 yy 將光標所在位置下的區塊複製,按"p"鍵粘貼到新位置。
:r f_name 合併文件名爲f_name的文件。
:#r f_name 合併文件名爲f_name的文件的第#行以後的內容。
行號
:set nu 加入行號。
:set nonu 關閉行號。
特殊字符
^ 只有當目標字符串出現在行首時才符合查找條件。例如:/^Hudson。
$ 只有當目標字符串出現在行尾時才符合查找條件。例如:/finally\.$,只找出結尾爲"finally."的字符串,由於"."有特殊的意義,因此在前面需加上"\"。
. 可以匹配任何的字符,如你要查找ROM或RAM,即可使用/R.M。
[] 中括號表示一個範圍,在查找時所有落於此範圍內的字符都符合查找條件,例如:/[aA]board會找出aboard或是Aboard。在中括號裏出可以用連字號(-)來表示一段區間,如[a-z]是指所有的小寫字母。
* *可以匹配在*號前任何數量的字符。
其他命令
. 重複前一指令。
u 取消前一條命令。
U 取消作用於現在這行的一切指令。
Ctrl + l 刷新屏幕顯示。
:f 或<Ctrl> + g 告訴用戶有關現行編輯文件的數據。

 

[全選並粘帖]

1,$y後,然後p粘貼

不過緩衝區好像有限制,好像是默認30行

 

[全選並刪除]

按Esc 然後 dG
注意大小寫

光標在任何地方都可以用
:%d

 

[上下查找]

n 是向下查,N 是向上查

 

[刪除一行或多行]

要刪除一行,光標此行並命令行敲d
要刪除多行,比如說光標下面的10行,敲d10d.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章