进入编辑器的命令
| 命令 | 功能 | 示例 |
|---|---|---|
| vi | [打开文件] | vi test.txt |
| vi + | [打开文件] 定位到最后一行 | vi + test.txt |
| vi + n | [打开文件] 定位到指定行(第n行) | vi +3 text.txt |
命令行模式
vi编辑器的默认模式
| 命令 | 功能 | 示例 | 备注 |
|---|---|---|---|
| ctrl + f | 向下翻页 | ||
| ctrl + d | 向下翻页(半页) | ||
| ctrl + b | 向上翻页 | ||
| ctrl + u | 向上翻页(半页) | ||
| h | [移动光标] 向前(当前行) | ||
| l | [移动光标] 向后移动光标(当前行) | ||
| j | [移动光标] 下一行 | ||
| k | [移动光标] 上一行 | ||
| w | [移动光标] 向后到单词的第一个字母 | ||
| e | [移动光标] 向后到单词的最后个字母 | 光标在中间时,操作当前单词 | |
| b | [移动光标] 向前到单词的第一个字母 | 光标在中间时,操作当前单词 | |
| 0 | [移动光标] 当前行行首 | 数字零 | |
| ^ | [移动光标] 当前行第一个单词的第一个字母 | ||
| $ | [移动光标] 当前行行尾 | ||
| gg | [移动光标] 第一行,第一个字母 | ||
| G | [移动光标] 最后一行,第一个字母 | ||
| n,G | [移动光标] 指定行行首(第n行) | 5 G | 分2步操作,先输入行号,再按G |
| n,+ | [移动光标] 向下移动n行 | 分2步操作 | |
| n,- | [移动光标] 向上移动n行 | 分2步操作 | |
| H | [移动光标] 屏幕中的第一行 | ||
| M | [移动光标] 屏幕中的中间行 | ||
| ) | [移动光标] 到句尾 | ||
| ( | [移动光标] 到句首 | ||
| } | [移动光标] 到段尾 | ||
| { | [移动光标] 到段首 | ||
| yw | 复制一个单词 | ||
| yy | 复制一行 | ||
| p | 粘贴,光标下一行 | 对 yw 命令来说是,光标后方 | |
| P | 粘贴,光标上一行 | 对 yw 命令不生效 | |
| r | 修改光标所在的内容 | 分2步操作,先按r,然后输入要替换的值 | |
| R | 替换光标所到之处的字符 | (替换模式)直到按下「ESC」键为止 | |
| u | 撤销 | ||
| ctrl + r | 回退刚刚的撤销操作 | ||
| . | 执行刚刚的操作 | 不包含”撤销“、”回退“操作 | |
| x | [删除] 光标选中的内容 | ||
| n,x | [删除] 光标且向后n个内容 | 分2步操作,先输入数量,再按x | |
| X | [删除] 光标前面的内容 | ||
| n,X | [删除] 光标向前n个内容 | 分2步操作,先输入数量,再按X | |
| dd | [删除] 光标选中的行 | 双击d | |
| n,dd | [删除] 光标且向下n行 | 5 dd | 分2步操作,先输入数量,再双击d |
末行模式
命令模式下,按 : 进入此模式
| 命令 | 功能 | 示例 | 备注 |
|---|---|---|---|
| w | 保存刚刚的操作 | ||
| q | 退出vi编辑器 | 如果已经修改则无法退出 | |
| q! | 强制退出vi编辑器 | 未保存的修改不生效 | |
| wq | 保存并退出vi编辑器 | ||
| shift + zz | 保存并退出vi编辑器(同wq) | 按住shift,然后双击z | |
| set nu | 每一行前面列出行号 | ||
| / | [查找] 查找指定内容 | /aaa | 查找字符 aaa |
| ? | [查找] 同 / | ?aaa | |
| n | [查找] 模式下定位到下一个内容 | ?模式下,代表向上查找 | |
| N | [查找] 模式上定位到下一个内容 | ?模式下,代表向下查找 | |
| n,m | 从n行开始到m行结束,执行后续命令 | 需要与其他命令同时使用 | |
| n,+m | 从n行开始向下m行,执行后续命令 | -m代表向上m行 | 需要与其他命令同时使用 |
| 0,$ | 从文档开始行到最后一样,执行后续命令 | 需要与其他命令同时使用 | |
| s/aaa/bbb | [替换] 将光标所在行的aaa替换为bbb | 行中的第一个aaa | |
| s/aaa/bbb/g | [替换] 将光标所在行的aaa替换为bbb | 行中的全部aaa | |
| s/aaa/bbb/gi | [替换] 同上 | 行中的全部aaa(不区分大小写) | |
| [n,m]s/aaa/bbb/gi | [替换] 将n到m行的aaa替换为bbb | 1,3s/aaa/bbb/gi | 将1到3行的aaa替换为bbb |
| [n,+m]s/aaa/bbb/gi | [替换] 将n和向下m行的aaa替换为bbb | 1,+3s/aaa/bbb/gi | |
| [n,m]d | [删除] 1到3行内容 | 1,3d | |
| [n,m]y | [复制] 1到3行内容 | 1,3y | |
| ! | 通过!可以执行外部命令 | !ls -l / | 通过ls命令查看 / 下的文件列表 |
插入模式
命令模式下,通过快捷键进入 按下「ESC」键,退出到命令模式
| 命令 | 功能 |
|---|---|
| i | [进入插入模式] 光标前进行后续操作 |
| I | [进入插入模式] 光标定位到行首第一个单词 |
| a | [进入插入模式] 光标后进行后续操作 |
| A | [进入插入模式] 光标定位到行尾 |
| o | [进入插入模式] 光标下插入空白行进行后续操作 |
| O | [进入插入模式] 光标上插入空白行进行后续操作 |
