最近很喜歡玩Linux,對於vim這個程序開發工具的常用命令做個總結,以後可以經常查閱。
1 一般命令模式下
移動光標方法 | |
h或向左箭頭 | 光標向左移動一個字符 |
j或向下箭頭 | 光標向下移動一個字符 |
k或向上箭頭 | 光標向上移動一個字符 |
l或向右箭頭 | 光標向右移動一個字符 |
想要進行多次移動,例如向下移動30行,可以使用"30j"或者"30向下箭頭",即在操作前加上行數 | |
ctrl + f | 屏幕向下移動一頁,相當於page down按鍵[常用] |
ctrl + b | 屏幕向上移動一頁,相當於page up按鍵[常用] |
ctrl + d | 屏幕向下移動半頁 |
ctrl + u | 屏幕下上移動半頁 |
+ | 光標移動到非空格符的下一行 |
- | 光標移動到非空格符的上一行 |
n + 空格鍵 | n代表數字,例如20 + 空格鍵,光標會移動到這一行的n個字符 |
0 或 home鍵 | 移動到這個一行最前面字符處[常用] |
$ 或 End鍵 | 移動到這一行最後面字符[常用] |
H | 光標移動到這個屏幕的最上方那一行的第一個字符 |
M | 光標移動到這個屏幕的中央那一行的第一個字符 |
L | 光標移動到這個屏幕的最下方那一行的第一個字符 |
G | 移動到這個文件的最後一行[常用] |
nG | n爲數字,移動到這個文件的第n行,例如20G則會移動到這個文件的第20行 |
gg | 移動到這個文件的第一行,相當於1G[常用] |
查找與替換 | |
/word | 向光標之下尋找一個名稱爲word的字符串。例如要在文件內查找damon這個字符串,就輸入/damon即可[常用] |
?word | 向光標之上尋找一個字符串名稱爲word |
n | 這個n是英文按鍵,代表重複前一個查找動作 |
N | 這個N是英文按鍵,與n剛好相反,爲反向進行前一個查找動作 |
使用/word配合n及N是非常有用的,可以讓你重複的查找到一些你查找的關鍵詞 | |
:n1,n2/word1/word2/g |
n1與n2爲數字,在第n1和n2行之間尋找world1這個字符串,並將該字符串替換爲word2,舉例來說,在100與200 行之間查找damon並替換爲demon,則:“:100,200/damon/demon/g” [常用] |
:1,$s/word1/word2/g | 從第一行到最後一行尋找word1字符串,並將該字符串替換爲word2[常用] |
:1,$s/word1/word2/gc |
從第一行到最後一行尋找word1字符串,並將該字符串替換爲word2,且在替換前顯示是字符給用戶確認(confirm)是否 需要替換[常用] |
刪除、賦值與粘貼 | |
x與X | 在一行當中,x爲向後刪除一個字符(相當於delete按鍵),X爲向前刪除一個字符(相當與backspace,即退格鍵)[常用] |
nx | n爲數字,連續向後刪除n個字符。舉例來說,我要連續刪除10個字符,10x |
dd | 刪除(剪切)光標所在的那一整行[常用] |
ndd | n爲數字,刪除(剪切)光標所在的向下n行,例如20dd則是刪除(剪切)20行[常用] |
d1G | 刪除(剪切)光標所在到第一行的所有數據 |
dG | 刪除(剪切)光標所在到最後一行的所有數據 |
d$ | 刪除(剪切)光標所在處,到該行的最後一個字符 |
d0 | 那個是數字的0,刪除(剪切)光標所在處,到該行的最前面一個字符 |
yy | 複製光標所在的那一行[常用] |
nyy | n爲數字,複製光標所在的向下n行,例如20yy則是複製20行[常用] |
y1G | 複製光標所在行到第一行的所有數據 |
yG | 複製光標所在行到最後一行的所有數據 |
y0 | 複製光標所在的那個字符到該行行首的所有數據 |
y$ | 複製光標所在的那個字符到該行行首的所有數據 |
p與P | p爲將已複製的數據在光標下一行粘貼,P則爲貼在光標上一行。 |
J | 將光標所在行與下一行的數據結合成同一行 |
c | 重複刪除多個數據,例如向下刪除10行,[10cj] |
u | 恢復前一個操作 |
ctrl + r | 重複上一個操作 |
. | 重複前一個操作,如果你想重複刪除,重複粘貼等操作,按下小數點 . 就好用 [常用] |
2 一般命令模式切換到編輯模式
進入、插入或替換的編輯模式 | |
i與I |
進入插入模式: i爲從目前光標所在處插入,I爲在目前所在行的一個非空格符開始插入[常用] |
a與A |
進入插入模式: a爲從目前光標所在的下一個字符處開始插入,A爲從光標所在行的最後一個字符處開始插入[常用] |
o與O |
進入插入模式: o爲在目前光標所在的下一行處插入新的一行,O爲在目前光標所在處的上一行插入新的一行[常用] |
r與R |
進入插入模式: r只會替換光標所在的那一個字符一次;R會一直替換光標坐在的文字,直到按下Esc爲止[常用] |
上面這些按鍵中,在vi界面的左下角會出現【--INSERT--】或【--REPLACE--】的字樣。 | |
Esc | 退出編輯模式,回到一般命令模式中[常用] |
3 一般模式切換到命令行模式
命令行模式的保存、退出等命令 | |
:w | 將編輯的數據寫入磁盤文件中,即保存[常用] |
:w! | 若文件屬性爲只讀時,強制寫入該文件。不過,到底能不能寫入,還是跟你對該文件的文件權限有關 |
:q | 退出vi[常用] |
:q! | 若曾修改過文件,又不想保存,使用!爲強制退出不保存 |
注意一下,那個!在vi當中,常常具有強制的意思。 | |
:wq | 保存後UI出,若爲:wq!則爲強制保存後退出[常用] |
ZZ | 這是大寫的Z,若文件沒有修改,則不保存退出,若文件已經被修改過,則保存後退出 |
:w [filename] | 將編輯的數據保存成另一個文件,類似另存爲新文件 |
:r [filename] | 在編輯的數據中,讀入另一個文件的數據,亦即將filename這個文件內容加到光標所在行後面 |
:n1,n2 w [filename] | 將n1到n2的內容保存爲filename這個文件 |
:!command |
暫時退出vi到命令行模式下執行command的顯示結果。例如 【:!ls /home】則即可在vi當中查看/home下面以ls輸出的文件信息 |
vi環境的修改 | |
:set nu | 顯示行號,設置之後,會在每一行的前綴顯示該行的行號 |
:set nonu | 與set nu相反爲取消行號 |
注意:在vi中,數字是很有意義的,數字通常代表重複做幾次的意思,也有可能是代表去到第幾個什麼什麼的意思。舉例來說,要刪除(剪切)50行,則是【50dd】。數字加在操作之前,
那我要向下移動20行,則【20j】或【20向下箭頭】。
常用的vi命令就這些,沒事得溫習溫習了。