一、進(jìn)入輸入模式
| 命令 | 說明 |
|---|---|
| i | 在當(dāng)前光標(biāo)所在處前插入文本 |
| I | 將光標(biāo)移動(dòng)到當(dāng)前行的行首,并在行首前插入文本 |
| a | 在當(dāng)前光標(biāo)所在處之后插入文本 |
| A | 將光標(biāo)移動(dòng)到當(dāng)前行的行末,并在行末之后插入文本 |
| o | 在光標(biāo)所在行的下面新插入一行,并將光標(biāo)移動(dòng)到新行的行首插入文本 |
| O | 在光標(biāo)所在行的上面新插入一行,并將光標(biāo)移動(dòng)到新行的行首插入文本 |
二、光標(biāo)移動(dòng)
| 命令 | 說明 |
|---|---|
| h或者左方向鍵 | 將光標(biāo)向左移動(dòng)一格; |
| j或者下方向鍵 | 將光標(biāo)向下移動(dòng)一格; |
| k或者上方向鍵 | 將光標(biāo)向上移動(dòng)一格; |
| l或者右方向鍵 | 將光標(biāo)向右移動(dòng)一格; |
| $ | 移動(dòng)光標(biāo)到當(dāng)前行的行末; |
| 數(shù)字0 | 移動(dòng)光標(biāo)到當(dāng)前行的行首; |
| w | 移動(dòng)光標(biāo)到下個(gè)字的開頭; |
| e | 移動(dòng)光標(biāo)到下個(gè)字的字尾; |
| b | 移動(dòng)光標(biāo)回上個(gè)字的開頭; |
| nl | 在當(dāng)前行中往右移動(dòng)n個(gè)字符,如:2l、34l; |
| crtl+b | 屏幕往上翻一頁(yè); |
| crtl+f | 屏幕往下翻一頁(yè); |
| crtl+u | 屏幕往上翻半頁(yè); |
| crtl+d | 屏幕往下翻半頁(yè); |
| lG | 移動(dòng)光標(biāo)到文件的第一行; |
| G | 移動(dòng)光標(biāo)到文件的最后一行。 |
| gg | 移動(dòng)光標(biāo)到第一行 |
三、文本編輯
| 命令 | 說明 |
|---|---|
| r | 替換光標(biāo)所在處的字符; |
| R | 替換光標(biāo)所到之處的字符,直到按ESC鍵為止; |
| J | 把光標(biāo)所在行的下一行內(nèi)容接到當(dāng)前行的行末; |
| x | 刪除光標(biāo)所在位置的字符; |
| nx | 刪除光標(biāo)所在位置開始的n個(gè)字符,如3x刪除3個(gè)字符; |
| X | 刪除光標(biāo)所在位置的前一個(gè)字符; |
| nX | 刪除光標(biāo)所在位置的前n個(gè)字符; |
| dw | 刪除光標(biāo)所處位置的單詞; |
| ndw | 刪除由光標(biāo)所處位置之前的n個(gè)單詞; |
| db | 刪除光標(biāo)所處位置之前的一個(gè)單詞; |
| ndb | 刪除光標(biāo)所處位置之前的n個(gè)單詞; |
| dd | 刪除光標(biāo)所在的行; |
| ndd | 刪除光標(biāo)所在行開始的n行; |
| d0 | 刪除由光標(biāo)所在行的第一個(gè)字符到光標(biāo)所在位置的前一個(gè)字符之間的內(nèi)容; |
| d$ | 刪除由光標(biāo)所在位置到光標(biāo)所在行的最后一個(gè)字符之間的內(nèi)容; |
| dlG | 刪除由文件第一行到光標(biāo)所在行之間的內(nèi)容; |
| dG | 刪除由光標(biāo)所在行到文件最后一行之間的內(nèi)容; |
| u | 撤銷更改的內(nèi)容; |
| ctrl+u | 撤銷在輸入模式下輸入的內(nèi)容。 |
四、復(fù)制粘貼
| 命令 | 說明 |
|---|---|
| yw | 復(fù)制光標(biāo)所在位置到單詞末尾之間的字符; |
| nyw | 復(fù)制光標(biāo)所在位置之后的n個(gè)單詞; |
| yy | 復(fù)制光標(biāo)所在行; |
| nyy | 復(fù)制由光標(biāo)所在行開始的n行; |
| p | 將復(fù)制的內(nèi)容粘貼到光標(biāo)所在位置。 |
五、查找與替換
| 命令 | 說明 |
|---|---|
| /str | 從光標(biāo)位置開始往文件末尾查找str,按n查找下一個(gè),按N返回上一個(gè); |
| ?str | 從光標(biāo)位置開始往文件開頭查找str,按n查找下一個(gè),按N返回上一個(gè); |
| :s/p1/p2/g | 將光標(biāo)所處行中所有p1均用p2替代; |
| :n1,n2s/p1/p2/g | 將第n1到n2行中所有p1均用p2替代; |
| :g/p1/s//p2/g | 將文件中所有p1均用p2替換 |
六、末行模式命令
| 命令 | 說明 |
|---|---|
| w | 保存當(dāng)前文件; |
| w! | 強(qiáng)制保存; |
| w file | 將當(dāng)前編輯的內(nèi)容寫到文件file中; |
| q | 退出vi; |
| q! | 不保存文件退出vi; |
| e file | 打開并編輯文件file,如果文件不存在則創(chuàng)建一個(gè)新文件; |
| r file | 把文件file的內(nèi)容添加到當(dāng)前編輯的文件中; |
| n | 移動(dòng)光標(biāo)到第n行; |
| !command | 執(zhí)行Shell命令command |
| r!command | 將命令command的輸出結(jié)果添加到當(dāng)前行。 |
| ZZ | 保存修改并退出vi |
七、其它
| 命令 | 說明 |
|---|---|
| :set nu | 指設(shè)置行號(hào); |
| :set nonu | 指取消行號(hào); |
| :n | 指移動(dòng)光標(biāo)到第n行; |
| :n1,n2d | 指刪除指定范圍的行; |
八、常見應(yīng)用
1、定義VI快捷鍵
格式為:map 快捷鍵 觸發(fā)命令
例子:
(1)map ^P I# 指在這一行的行尾加入注釋符號(hào)#
(2)map ^B ox 指在這一行的行尾刪除注釋符#
說明:
在VI中如何輸入^P這個(gè)字符呢?
方法有兩種:
一種是ctrl+v ctrl+p
另一種是ctrl+v+p
2、取消VI快捷鍵
- 格式為unmap
3、連續(xù)行注釋
(1):n1,n2s/^/#/g 指第n1到n2行都注釋掉
(2):n1,n2s/^/#//g 指第n1到第n2行的注釋符都刪除
(3):n1,n2s/^////g 指把第n1到第n2行加入//符號(hào)
說明:
^:表示匹配行首;
\:表示轉(zhuǎn)義符
4、替換
格式:ab XXX YYY
例子:
ab sammail samlee@126.com
指在vi中輸入sammail按空格鍵或者回車鍵就會(huì)把sammail自動(dòng)變?yōu)?a target="_blank" rel="nofollow">samlee@126.com。我們?cè)趯憇hell腳本時(shí)經(jīng)常要加上作者的信息,這個(gè)方法就很方便我們填寫自己的信息了。
如何取消上面對(duì)ab的定義呢?
直接unab即可
5、VI的配置文件
(1)VI配置文件的位置:~/.vimrc(默認(rèn)為空)
(2)在編輯VI時(shí)我們常常需要打開行號(hào)的功能,如果要打開VI文件就顯示行號(hào),可以在~/.vimrc中加入set nu這句話就可以了。
九、vim常用命令圖解:

vim-cmd.png