vi編輯器是所有Unix及Linux系統下標準的編輯器,它的強大不遜色於任何最新的文本編輯器,這裏只是簡單地介紹一下它的用法和一小部分指令。由於對Unix及Linux系統的任何版本,vi編輯器是完全相同的,因此您可以在其他任何介紹vi的地方進一步瞭解它。Vi也是Linux中最基本的文本編輯器,學會它後,您將在Linux的世界裏暢行無阻。
1、vi的基本概念
基本上vi可以分爲三種狀態,分別是命令模式(command mode)、插入模式(Insert mode)和末行模式(last line mode),各模式的功能區分如下:
1) 命令行模式(command mode)
控制屏幕光標的移動,字符、字或行的刪除,移動複製某區段及進入Insert mode下,或者到 last line mode。
2) 插入模式(Insert mode)
只有在Insert mode下,纔可以做文字輸入,按「ESC」鍵可回到命令行模式。
3) 末行模式(last line mode)
設置vi編輯環境、保存文件、退出編輯器,以及多文件內容進行查找、替換等操作。
一、命令行模式(command mode)功能鍵
1、從命令模式進入到插入模式:
指令 |
說明 |
a |
在光標後插入內容; |
A |
在當前行的末尾插入內容; |
o |
在當前行的下面插入內容; |
O |
在當前行的上面插入內容 |
i |
在光標處插入內容; |
I |
在當前行的行首插入內容 |
2、命令模式下的跳轉命令:
指令 |
說明 |
上、下、左、右方向鍵 |
移動光標 |
pageup或ctrl+B |
向上翻頁; |
pagedown或ctrl+F |
向下翻頁 |
home鍵 |
跳到當前行的行首(shift+^/數字0); |
end鍵 |
跳到當前行的行尾(shift+$) |
G(shift+g) |
跳到文件的最後一行;#G:跳轉到文件的第#行 |
gg/1G |
回到文件的第一行行首;10gg:跳到文件的第十行;22gg:跳到文件的第22行; |
H |
跳到當前屏幕的第一行 |
M |
跳到當前屏幕的中間 |
L |
跳到當前屏幕的最後一行 |
w |
一個單詞一個單詞的向右跳 |
b |
一個單詞一個單詞的向左跳 |
f |
後面跟想跳轉的字母,如:f b,向右跳到最近的一個b字母處 |
3、命令模式下的複製和粘貼命令:
指令 |
說明 |
yy |
複製當前行;比如:10yy:從當前行開始向下複製十行 |
yw |
從光標開始複製一個單詞 |
y$ |
複製光標處到行尾所有內容 |
y^ |
複製光標處到行首所有內容 |
p |
(小寫) 將緩衝區中的內容粘貼到光標位置處之後 |
P |
(大寫) 粘貼到光標位置處之前 |
4、命令模式下的刪除\撤消\替換命令:
指令 |
說明 |
dd |
刪除當前行;10dd:從當前行開始向下刪除10行 |
dw |
從光標開始刪除一個單詞 |
d$ 刪除光標處到行尾所有內容 |
d^ |
刪除光標處到行首所有內容 |
x/del |
刪除光標處的一個字符 |
u |
撤消上一步操作 |
U |
用於取消對當前行所做的所有編輯 |
ZZ |
保存當前的文件內容並退出vi編輯器 |
ctrl+r |
反撤消 |
r b |
把光標所在處的字符替換成b;r n:把光標處的字符替換成n |
R |
從光標處連續向右替換直到按esc鍵停止 (光標處開始替換模式) |
5、命令模式下文件內容查找:
指令 |
說明 |
/word |
從上而下在文件中查找字符串“word” |
?word |
從下而上在文件中查找字符串“word” |
n |
定位下一個匹配的被查找的字符串 |
N |
定位上一個匹配的被查找的字符串 |
二、插入模式
就是寫入文本內容。
三、末行模式(在“:”後面輸入內容)
1、保存和退出:
指令 |
說明 |
w |
保存 |
w aa.log |
把當前文件另存爲aa.log 放到當前目錄 |
w /tmp/ab.log |
把當前文件另存爲ab.log放到/tmp目錄 |
q |
退出 |
wq |
保存後退出 和x一樣 |
q! |
不保存退出 |
1090,1096 w 1090.log |
把當前文件的1090行到1096行,另存到當前目錄1090.log中 |
1085,1088s /^/#/g |
在1085行到1088行的行首插入# |
%s /^/#/g |
所有行的行首插入# |
1085,1088s /^#//g |
在1085行到1088行的行首去掉# |
set nu |
顯示行號 (臨時顯示) |
set nonu |
不顯示行號 |
2、打開新文件或讀入其他文件內容
指令 |
說明 |
e /home/a.txt |
在當前文件下,打開新的文件進行編輯; |
r aa.log |
把當前目錄下的aa.log文件讀取到當前文件中,起到文件合併的效果 |
3、文件內容替換
指令 |
說明 |
s /old/new |
將當前行中查找到的第一個字符串“old”替換爲“new” |
s /old/new/g |
將當前行中查找到的所有字符串“old”替換爲“new” |
#,# s/old/new/g |
在行號"#,#"範圍內替換所有的字符串“old”爲“new” |
% s/old/new/g |
在整個文件範圍內替換所有的字符串“old”爲“new” |
%s /^c/C/g |
把當前文檔中所有以c開頭的內容替換成C |
s /old/new/c |
在替換命令末尾加入c命令,將對每個替換動作提示用戶進行確認 |