vi只是一個文本編輯程序
編輯模式到命令模式用i,a,o,r參數
編譯模式到命令模式或其他模式esc鍵
vi filename :打開或者新建文件,并將光標置于第一行首
vi+n filename :打開文件,并將光標置于第n行首
vi + filename :打開文件,并將光標置于最后一行首
vi +/pattern filename :打開文件,并將光標置于第一個與pattern匹配的串處
vi -r filename :在上次正在vi編輯時發生系統崩潰,恢復filename
命令模式下:
h 向左 可以與數字一起用,如:30h:向左30位
j 向下
k 向上
l 向右
ctrl+f 向下移動一頁 相當于page down鍵
ctrl+b 向上移動一頁 相當于page up鍵
ctrl+d 向下半頁翻
ctrl+u 向上半頁翻
shift + 光標移動到非空格符的下一列
shift - 光標移動到非空格符的上一列
shift ^ 光標移動到行首
n+空格鍵 n表示數字,比如20+空格鍵 表示移動到該光標所在位置后20個字符處
0 數字0 :光標移動到該行的最前面的字符處
$ 光標移動到這一行的最后面字符處
H 光標移動到這一屏幕的最上方哪一行
M 光標移動到這個屏幕的中央哪一行
L 光標移動到這一屏幕的最下方的哪一行
G 移動到這個檔案的最后一行
nG n為數字。移動到這個檔案的第n行,例如:20G則會移動到這個檔案的第20行
gg 移動到這個檔案的第一行 相當于1G
n+Enter鍵 n為數字。光標向下移動n行
x,X 在一行字當中,x為向后刪除一個字符(相當于del鍵)X為向前刪除一個字符(相當于編輯模式下的backspace退格鍵)
nx n為數字,連續向后刪除n個字符,例如:10x
dd 刪除光標所在的那一整列
dw 刪/剪切至詞尾(對光標所在的單詞操作)
ndw 刪/剪切N個詞
ndd n為數字,刪除光標所在的向下n列,例如20dd則是刪除20列
d1G 刪除光標所在到第一行的所有數據
dG 刪除光標所在到最后一行的所有數據
nd$ 刪除光標所在處的后面n行
d0 數字0,刪除光標所在處,到該行的最前面一個字符
yy 復制光標所在的哪一行 p鍵粘貼
yw 復制光標所在的那一詞 p鍵粘貼
nyw 復制光標所在的n個詞 p鍵粘貼
nyy n為數字,復制光標所在的向下n行,例如:20yy則是復制20列 p鍵粘貼
y1G 復制光標所在列到第一列的所有數據
yG 復制光標所在列到最后一列的所有數據
y0 復制光標所在的那個字符到該行行首的所有數據
y$ 復制光標所在的那個字符到該行行尾的所有數據
p,P p為將已復制的數據在光標下一行貼上,P則為貼在光標的上一行,例如:我目前光標在第20行,且已經復制了10行,則按下p后,那10行數據會貼在原來的20行之后,亦即21行開始貼,但如果按下P,那么原本的第20行會被推到30行
J 將光標所在列與下一列的數據結合成同一列
c 重復刪除多個數據,例如向下刪除10行 c1j
u 復原前一個動作
U 取消一行內的所有更動
ctrl+r 重做上一行動作 ctrl+r與u都是很常用的按鍵
:e! 放棄所有變動,重新編輯
. 小數點,重復前一個動作的意思,如果您想要重復刪除,重復貼上等等動作,按下小數點.就好了
/word 向光標以下尋找一個字符串為word
?word 向光標以上尋找一個字符串名稱為word
n 英文按鍵n 代表重復前一個搜索動作,如前一個搜索/word 按下n鍵后會繼續向下搜索
N 英文按鍵N 剛好與n相反 為反向進行前一個搜索 如?word 按住N鍵就是向下搜索
:n1,n2s/word1/word2/g -----n1 n2為數字,在第n1行與n2行之間尋找word1這個字符串,并將該字符串取代為word2 例如:在100到200行之間搜索test并取代為TEST則:【:100,200s/test/TEST/g】
:1,$s/word1/word2/g 從第一行到最后一行尋找word1字符串,并將該字符串取代為word2
:1,$s/word1/word2/gc 從第一行到最后一行尋找word1字符串,并將該字符串取代為word2 且在取代前顯示提示字符串給使用者確認(confirm)是否需要取代,提示出現,y:替換,n:不替換 a:全部替換 q:退出
vi 的編輯操作:
i,I 插入:在目前的光標所在處插入輸入之文字,已存在的文字會后退,其中i為【從目前光標所在處插入】,I為【在目前所在處的第一個非空格符處開始插入】
a,A a為【從目前光標所在的下一個字符開始插入】,A為【從光標所在行的最后一個字符處開始插入】
o,O 這是英文字母o的大小寫,o為【在目前光標所在的下一行處插入新的一行】;O為在目前光標所在處的上一行插入新的一行
r,R 取代:r會取代光標所在的哪一個字符;R會一直取代光標所在的文字,直到按下ESC為止
Esc 退出編輯模式,回到一般模式中
:w 將編輯的數據寫入硬盤檔案中
:w! 若檔案屬性為【只讀】時,強制寫入該檔案,不過,到底能不能寫入,還是跟你對檔案的檔案權限有關
:q 離開
:q! 若曾修改過檔案,又不想儲存,使用!為強制離開不儲存檔案
:wq 儲存后離開,若為:wq!則為強制儲存后離開
:x 保存退出
:e! 將檔案還原到最原始的狀態
ZZ 若檔案沒有改動,則不儲存離開,若檔案已經經過改動,則存儲后離開
:w 【filename】 將編輯的數據存儲成另一個檔案(類似另存新檔)
:r 【filename】 在編輯的數據中,讀入另一個檔案的數據,亦即將【filename】這個檔案內容加到光標所在行后面
:n1,n2 w【filename】 將n1到n2行的內容存儲成filename這個檔案
:!command 暫時離開vi到指令列模式下執行command的顯示結果!例如【:! ls/home】即可在vi當中察看/home地下ls輸出的檔案信息
set nu 顯示行號,設定之后,會在每一行的前綴顯示該行的行號
set nonu 與set nu相反,為取消行號
vi 高級命令
分割窗口:
vi -o file1 file2 水平分割窗口編輯兩個文件
vi -O file1 file2 垂直分割窗口編輯兩個文件
|