vi共分爲3種模式:
1). 一般模式
2). 編輯模式
3). 命令行命令模式
命令行的命令
一般模式:移動光標的方法 |
|
h或向左方向鍵(←) |
光標向左移動一個字符 |
j或向下方向鍵(↓) |
光標向下移動一個字符 |
k或向上方向鍵(↑) |
光標向上移動一個字符 |
或向右方向鍵(→) |
光標向右移動一個字符 |
number+* |
移動number個*標示的方向 |
[Ctrl] + [f] |
屏幕“向下”移動一頁,相當於 [Page Down] 按鍵(常用) |
[Ctrl] + [b] |
屏幕“向上”移動一頁,相當於 [Page Up] 按鍵(常用) |
[Ctrl] + [d] |
屏幕“向下”移動半頁 |
[Ctrl] + [u] |
屏幕“向上”移動半頁 |
+ |
光標移動到非空格符的下一行 |
- |
光標移動到非空格符的上一行 |
n <space> |
n表示“數字”,例如20。按下數字後再按空格鍵,光標會向右移動這一行的n個字符。例如20 <space> 則光標會向後面移動20個字符距離 |
0 |
這是數字“0”:移動到這一行的最前面字符處(常用) |
$ |
移動到這一行的最後面字符處(常用) |
H |
光標移動到這個屏幕的最上方那一行 |
M |
光標移動到這個屏幕的中央那一行 |
L |
光標移動到這個屏幕的最下方那一行 |
G |
移動到這個文件的最後一行(常用) |
nG |
n爲數字。移動到這個文件的第n行。例如20G則會移動到這個文件的第20行(可配合 :set nu) |
gg |
移動到這個文件的第一行,相當於1G(常用) |
n <Enter> |
n爲數字。光標向下移動n行(常用) |
一般模式:搜索與替換 |
|
/word |
從光標位置開始,向下尋找一個名爲word的字符串。例如要在文件內搜索vbird這個字符串,就輸入 /vbird即可(常用) |
?word |
從光標位置開始,向上尋找一個名爲word的字符串 |
n |
n是英文按鍵。表示“重複前一個搜索的動作”。舉例來說,如果剛剛執行 /vbird去向下搜索vbird字符串,則按下n後,會向下繼續搜索下一個名稱爲vbird的字符串。如果是執行 ?vbird的話,那麼按下n,則會向上繼續搜索名稱爲vbird的字符串 |
N |
這個N是英文按鍵。與n剛好相反,爲“反向”進行前一個搜索操作。例如 /vbird後,按下N則表示“向上”搜索vbird |
:n1、n2s/word1/word2/g |
n1與n2爲數字。在第n1與n2行之間尋找word1這個字符串,並將該字符串替換爲word2。舉例來說,在100到200行之間搜索vbird並替換爲VBIRD則:“:100、200s/vbird/VBIRD /g”(常用) |
:1、$s/word1/word2/g |
從第一行到最後一行尋找word1字符串,並將該字符串替換爲word2(常用) |
:1、$s/word1/word2/gc |
從第一行到最後一行尋找word1字符串,並將該字符串替換爲word2。且在替換前顯示提示符給用戶確認(conform)是否需要替換(常用) |
一般模式:刪除、複製與粘貼 |
|
x, X |
在一行字中,x爲向後刪除一個字符(相當於 [Del] 按鍵),X爲向前刪除一個字符(相當於 [backspace] 即退格鍵)(常用) |
nx |
n爲數字,連續向後刪除n個字符。舉例來說,要連續刪除10個字符,則輸入“10x” |
dd |
刪除光標所在的那一整行(常用) |
ndd |
n爲數字。從光標位置開始,刪除向下n列,例如20dd則是刪除20列(常用) |
d1G |
刪除光標所在位置到第一行的所有數據 |
dG |
刪除光標所在位置到最後一行的所有數據 |
d$ |
刪除光標所在位置到該行的最後一個字符 |
d0 |
d的後面是數字0,刪除光標所在處,到該行的最前面一個字符 |
yy |
複製光標所在的那一行(常用) |
nyy |
n爲數字。複製光標所在的向下n行,例如20yy則是複製20行(常用) |
y1G |
複製光標所在行到第一行的所有數據 |
yG |
複製光標所在行到最後一行的所有數據 |
y0 |
複製光標所在的那個字符到該行行首的所有數據 |
y$ |
複製光標所在的那個字符到該行行尾的所有數據 |
p, P |
p爲將已複製的數據粘貼到光標的下一行,P則爲貼在光標上一行。舉例來說,當前光標在第20行,且已經複製了10行數據。則按下p後,那10行數據會貼在原來的20行之後,即由21行開始貼。但如果是按下P,那麼原來的第20行會被變成30行(常用) |
J |
將光標所在行與下一列的數據結合成同一行 |
c |
重複刪除多個數據,例如向下刪除10行,[10cj] |
u |
復原前一個操作(常用) |
[Ctrl]+r |
重做上一個操作(常用) |
. |
這就是小數點。意思是重複前一個動作。如果想重複刪除、重複粘貼,按下小數點“.”就可以(常用) |
進入編輯模式 |
|
i、I |
插入:在當前光標所在處插入輸入文字,已存在的文字會向後退;其中,i爲“從當前光標所在處插入”,I爲“在當前所在行的第一個非空格符處開始插入”(常用) |
a、A |
a爲“從當前光標所在的下一個字符處開始插入”,A爲“從光標所在行的最後一個字符處開始插入”(常用) |
o、O |
這是英文字母o的大小寫。o爲“在當前光標所在的下一行處插入新的一行”;O爲“在當前光標所在處的上一行插入新的一行”(常用) |
r、R |
替換:r會替換光標所在的那一個字符;R會一直替換光標所在的文字,直到按下ESC鍵爲止(常用) |
Esc |
退出編輯模式,回到一般模式中(常用) |
命令行命令模式 |
|
:w |
將編輯的數據寫入硬盤文件中(常用) |
:w! |
若文件屬性爲“只讀”時,強制寫入該文件。不過,到底能不能寫入,與文件權限有關 |
:q |
離開vi(常用) |
:q! |
若曾修改過文件,又不想存儲,使用 ! 爲強制離開不存儲文件 |
注意一下,那個感嘆號(!)在vi當中,常常具有“強制”的意思。 |
|
:wq |
存儲後離開,若爲 :wq! 則爲強制存儲後離開(常用) |
: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相反,爲取消行號 |
VIM
塊選擇 |
v |
字符選擇,會將光標經過的地方反白選擇 |
V |
行選擇,會將光標經過的行反白選擇 |
[Ctrl]+v |
塊選擇,可以用長方形的方式選擇數據 |
y |
複製反白的地方 |
d |
將反白的地方刪除掉 |