vi編輯器是Unix/Linux系統管理員必須學會使用的編輯器。看了不少關于vi的資料,終于得到這個總結。
首先,記住vi編輯器的兩個模式:1、命令模式?2、編輯模式。
在一個UNIX/Linux的shell命令或者一個以斜杠(/)、問號(?)或冒號(:)開始的vi命令后面用戶需要鍵入回車鍵,而要切換到vi命令模式需要按Esc鍵。注意,以冒號(:)或者斜杠(/) 開始的vi命令會顯示在屏幕底部,但其他命令都不會顯示在屏幕上。
打開、寫入和關閉文件(使用Enter鍵)
vi?file 打開文件名為file的文件(UNIX shell命令)
:w 將工作緩沖區的變化寫入默認文件中
:w?file 將工作緩沖區的變化寫入名為file的文件中
:q 退出vi編輯器
:wq 將工作緩沖區的變化寫入文件并退出
:q! 不將工作緩沖區的變化寫入文件并退出vi編輯器
插入文本(vi命令模式下使用)
a 在當前光標位置的右邊添加文本
i 在當前光標的左邊插入文本
A 在當前行的末尾添加文本
I 在當前行的開始出添加文本
O 在當前行的上面新建一行
o 在當前行的下面新建一行
R 替換(覆蓋)當前光標位置以及以后的若干文本
J 連接光標所在行以及下一行,成為一行
移動光標
上下左右方向鍵 向箭頭所示方向移動光標一個位置
h 向左
j 向下
k 向上
l 向右
空格鍵 向右
Backspace 向左
Enter 向下移動到下一行的行首
-(連字符鍵) 向上移動到上一行的行首
糾正錯誤(vi命令模式下使用)
x 刪除一個字符
dd 刪除當前行
ndd 上除當前行在內的n行
u 撤銷上一次操作(最后一步)
U 撤銷對當前行的所有操作
拼寫檢查(UNIX shell命令)
spell?file 顯示問及那file中找到的拼寫錯誤
ispell file 顯示問及那file中找到的拼寫錯誤
搜索(vi命令模式下使用)
/word 向前搜索第一個出現的word
/ 繼續向前搜索下一個word
?word 向后搜索第一個出現的word
? 繼續向后搜索下一個word
跳躍到指定行(vi命令模式使用)
n+ 向前(向下)跳躍n行
n- 向后(向上)跳躍n行
nG 跳躍到行號為n的行,G為Go
G 跳躍到文件的底部
設置行號(vi命令模式下使用)
:set nu 在屏幕上顯示行號
:set nonu 取消行號
復制和粘貼(vi命令模式下使用)
"knyy 復制n行到緩沖區"k
"kp 將緩沖區"k的內容粘貼到當前行的下面
全局替換文本(vi命令模式下使用)
:%s/old/new/g 用new替換文件中的所有old。s為substitution,替換的意思。g為global。
編輯另一個文件(vi命令模式下使用)
:e?otherfile 編輯文件名為otherfile的文件
為命令行編輯制定一個編輯器(UNIX shell命令)
bindkey -v 指定vi編輯器(用于 tcsh)
VISUAL=vi 指定vi編輯器(用于 ksh)
set -o vi 指定vi編輯器(用于 bash)
緩沖區:
前面講過,vi編輯器設計上是對工作緩沖區的文件副本進行編輯。在使用vi編輯器的時候,用戶還可以訪問其他緩沖區。總共有36個緩沖區。
◆ 未命名緩沖區
◆ 已命名緩沖區 "a、"b、"c、……、 "z
◆?? 已編號緩沖區 "1、"2、"3、……、 "9
未命名緩沖區有時也叫做一般緩沖區。在修改文本時,舊文本并沒有被立刻刪除。vi將舊文本放在未命名緩沖區直到用戶刪除修改更多的文本。這樣就可以實現撤 銷,具體命令為 u。因為vi只有一個未命名緩沖區,所以只能撤銷一次。
命令模式和編輯模式的切換:
如果不清楚當前所在的模式,可以連續按2次Esc鍵盤,主機會發出警報聲,這樣就肯定進入了命令模式。在命令模式下面,輸入a A i I O o R都會進入編輯模式。所輸入的這單個字符不會顯示,也不會插入到文件中。
本文出自 “Eric Chen” 博客,請務必保留此出處http://skycyc23.blog.51cto.com/231267/352596