一、进入输入模式
| 命令 | 说明 |
|---|---|
| i | 在当前光标所在处前插入文本 |
| I | 将光标移动到当前行的行首,并在行首前插入文本 |
| a | 在当前光标所在处之后插入文本 |
| A | 将光标移动到当前行的行末,并在行末之后插入文本 |
| o | 在光标所在行的下面新插入一行,并将光标移动到新行的行首插入文本 |
| O | 在光标所在行的上面新插入一行,并将光标移动到新行的行首插入文本 |
二、光标移动
| 命令 | 说明 |
|---|---|
| h或者左方向键 | 将光标向左移动一格; |
| j或者下方向键 | 将光标向下移动一格; |
| k或者上方向键 | 将光标向上移动一格; |
| l或者右方向键 | 将光标向右移动一格; |
| $ | 移动光标到当前行的行末; |
| 数字0 | 移动光标到当前行的行首; |
| w | 移动光标到下个字的开头; |
| e | 移动光标到下个字的字尾; |
| b | 移动光标回上个字的开头; |
| nl | 在当前行中往右移动n个字符,如:2l、34l; |
| crtl+b | 屏幕往上翻一页; |
| crtl+f | 屏幕往下翻一页; |
| crtl+u | 屏幕往上翻半页; |
| crtl+d | 屏幕往下翻半页; |
| lG | 移动光标到文件的第一行; |
| G | 移动光标到文件的最后一行。 |
| gg | 移动光标到第一行 |
三、文本编辑
| 命令 | 说明 |
|---|---|
| r | 替换光标所在处的字符; |
| R | 替换光标所到之处的字符,直到按ESC键为止; |
| J | 把光标所在行的下一行内容接到当前行的行末; |
| x | 删除光标所在位置的字符; |
| nx | 删除光标所在位置开始的n个字符,如3x删除3个字符; |
| X | 删除光标所在位置的前一个字符; |
| nX | 删除光标所在位置的前n个字符; |
| dw | 删除光标所处位置的单词; |
| ndw | 删除由光标所处位置之前的n个单词; |
| db | 删除光标所处位置之前的一个单词; |
| ndb | 删除光标所处位置之前的n个单词; |
| dd | 删除光标所在的行; |
| ndd | 删除光标所在行开始的n行; |
| d0 | 删除由光标所在行的第一个字符到光标所在位置的前一个字符之间的内容; |
| d$ | 删除由光标所在位置到光标所在行的最后一个字符之间的内容; |
| dlG | 删除由文件第一行到光标所在行之间的内容; |
| dG | 删除由光标所在行到文件最后一行之间的内容; |
| u | 撤销更改的内容; |
| ctrl+u | 撤销在输入模式下输入的内容。 |
四、复制粘贴
| 命令 | 说明 |
|---|---|
| yw | 复制光标所在位置到单词末尾之间的字符; |
| nyw | 复制光标所在位置之后的n个单词; |
| yy | 复制光标所在行; |
| nyy | 复制由光标所在行开始的n行; |
| p | 将复制的内容粘贴到光标所在位置。 |
五、查找与替换
| 命令 | 说明 |
|---|---|
| /str | 从光标位置开始往文件末尾查找str,按n查找下一个,按N返回上一个; |
| ?str | 从光标位置开始往文件开头查找str,按n查找下一个,按N返回上一个; |
| :s/p1/p2/g | 将光标所处行中所有p1均用p2替代; |
| :n1,n2s/p1/p2/g | 将第n1到n2行中所有p1均用p2替代; |
| :g/p1/s//p2/g | 将文件中所有p1均用p2替换 |
六、末行模式命令
| 命令 | 说明 |
|---|---|
| w | 保存当前文件; |
| w! | 强制保存; |
| w file | 将当前编辑的内容写到文件file中; |
| q | 退出vi; |
| q! | 不保存文件退出vi; |
| e file | 打开并编辑文件file,如果文件不存在则创建一个新文件; |
| r file | 把文件file的内容添加到当前编辑的文件中; |
| n | 移动光标到第n行; |
| !command | 执行Shell命令command |
| r!command | 将命令command的输出结果添加到当前行。 |
| ZZ | 保存修改并退出vi |
七、其它
| 命令 | 说明 |
|---|---|
| :set nu | 指设置行号; |
| :set nonu | 指取消行号; |
| :n | 指移动光标到第n行; |
| :n1,n2d | 指删除指定范围的行; |
八、常见应用
1、定义VI快捷键
格式为:map 快捷键 触发命令
例子:
(1)map ^P I# 指在这一行的行尾加入注释符号#
(2)map ^B ox 指在这一行的行尾删除注释符#
说明:
在VI中如何输入^P这个字符呢?
方法有两种:
一种是ctrl+v ctrl+p
另一种是ctrl+v+p
2、取消VI快捷键
- 格式为unmap
3、连续行注释
(1):n1,n2s/^/#/g 指第n1到n2行都注释掉
(2):n1,n2s/^/#//g 指第n1到第n2行的注释符都删除
(3):n1,n2s/^////g 指把第n1到第n2行加入//符号
说明:
^:表示匹配行首;
\:表示转义符
4、替换
格式:ab XXX YYY
例子:
ab sammail samlee@126.com
指在vi中输入sammail按空格键或者回车键就会把sammail自动变为samlee@126.com。我们在写shell脚本时经常要加上作者的信息,这个方法就很方便我们填写自己的信息了。
如何取消上面对ab的定义呢?
直接unab即可
5、VI的配置文件
(1)VI配置文件的位置:~/.vimrc(默认为空)
(2)在编辑VI时我们常常需要打开行号的功能,如果要打开VI文件就显示行号,可以在~/.vimrc中加入set nu这句话就可以了。
九、vim常用命令图解:

vim-cmd.png