文章目录
一、基本简介
- 在很多
Linux
发行版中,直接把vi
做成vim
的软链接 vi
的简称是visual interface
,是Linux
系统中最经典的文本编辑器vi
的核心设计思想,是让专业人员在键盘的核心区域就能完成所有的编辑操作vim
的简称是vi improved
,是vi
发展出来的文本编辑器,支持 代码补全、错误跳转以及编译 等各种实用功能
sudo apt install vim
二、打开新建
序号 | 命令 | 作用 |
---|---|---|
01 | vi 文件名 | 打开指定文件,若不存在,则新建打开 |
02 | vi 文件名 +行数 | 打开指定文件,快速定位到错误代码行 |
Explain:
vi 文件名 +
直接定位到文件末尾vi
退出异常,在磁盘上可能会保存有 交换文件- 下次再编辑时,会弹出提示,按
D
即可删除 交换文件
三、基本模式
Explain:
- 打开文件,首先进入 命令模式
- 按下
i(insert)
进入 编辑模式 - 按下
:
进入 末行模式 ,以下为命令功能说明
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | :w | write | 保存 |
02 | :q | quit | 退出 |
03 | :q! | 强制退出 | |
04 | :wq | write & quit | 保存并退出 |
05 | :wq! | 强制保存并退出 | |
06 | :x | 保存并退出 |
四、重复次数
- 在命令模式下,输入一个数字,再跟上一个命令,就可以让该命令 重复执行指定次数
- 示例步骤:
- 输入
n
,次数 - 按下
i
,进入编辑模式 - 输入
*
,字符 - 按下
Esc
,返回命令模式 - 输出
n
次个*
字符
- 输入
Explain:
- 进入编辑模式之前,请勿按数字
五、移动光标
- 基本移动
序号 | 命令 | 手指 | 作用 |
---|---|---|---|
01 | h | 食指 | 向左 |
02 | j | 食指 | 向下 |
03 | k | 中指 | 向上 |
04 | l | 无名指 | 向右 |
- 行内移动
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | w | word | 向后移动 一个单词 |
02 | b | back | 向前移动 一个单词 |
03 | 0 | 快速移动到 行首 | |
04 | $ | 快速移动到 行尾 | |
05 | ^ | 快速移动到 非空行首 |
- 行数移动
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | gg | go | 快速移动到 文本顶部非空行首 |
02 | G | go | 快速移动到 文本末尾非空行首 |
03 | ngg | go | 快速移动到 指定行数非空行首 |
04 | nG | go | 快速移动到 指定行数非空行首 |
05 | :n | 末行模式快速移动到 指定行数非空行首 |
- 屏幕移动
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | Ctrl + b | back | 向上翻页 |
02 | Ctrl + f | forward | 向下翻页 |
03 | H | Head | 快速移动到 屏幕顶部非空行首 |
04 | M | Middle | 快速移动到 屏幕中间非空行首 |
05 | L | Low | 快速移动到 屏幕底部非空行首 |
- 段落移动
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | { | 上一空行段 | |
02 | } | 下一空行段 | |
03 | % | 括号匹配及切换 | |
04 | mX | mark | 添加标记 A - Z 任意大小写字母 |
05 | `X | 直接定位到标记 X 所在位置 |
Explain:
- 标记行若被删除,标记同时被删除
- 添加相同标记行,标记同时被替换
六、选中文本
序号 | 命令 | 模式 | 作用 |
---|---|---|---|
01 | v | 可视模式 | 选中从光标初始位置移动到 光标最终位置的文本 |
02 | V | 可视 行 模式 | 选中从光标初始位置移动到 光标经过完整行的文本 |
03 | Ctrl + v | 可视 块 模式 | 选中从光标初始位置 二维 移动到 光标最终位置的文本 |
Explain:
- 在可视模式下,可以和 移动命令 组合使用,例如:
ggVG
全选
七、撤销恢复
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | u | undo | 撤销 上次的命令 |
02 | Ctrl + r | redo | 恢复 上次的命令 |
八、删除文本
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | x | cut | 快速删除光标 所在字符 |
02 | md | delete | 快速删除光标 选中字符 |
03 | dd | delete | 快速删除光标 所在完整行 |
04 | D | delete | 快速删除从光标初始位置到 一行行尾 |
序号 | 示例 | 作用 |
---|---|---|
01 | dw | 快速删除从光标位置到 单词末尾 |
02 | d0 | 快速删除从光标位置到 行首 |
03 | d} | 快速删除从光标位置到 段落结尾 |
04 | ndd | 快速删除从光标所在行到 向下连续的 n 行 |
05 | dngg | 快速删除从光标所在行到 指定代码行 |
06 | d`X | 快速删除从光标所在行到 标记 X 代码行 |
九、复制文本
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | my | copy | 快速复制光标 选中字符 |
02 | yy | copy | 快速复制光标 所在完整行 |
03 | p | paste | 快速粘贴 文本缓冲区 里复制剪切的文本内容 |
序号 | 示例 | 作用 |
---|---|---|
01 | yw | 快速复制从光标位置到 单词末尾 |
02 | y0 | 快速复制从光标位置到 行首 |
03 | y} | 快速复制从光标位置到 段落结尾 |
04 | nyy | 快速复制从光标所在行到 向下连续的 n 行 |
05 | yngg | 快速复制从光标所在行到 指定代码行 |
06 | y`X | 快速复制从光标所在行到 标记 X 代码行 |
Explain:
vi
的 文本缓冲区 和系统的 剪贴板 ,不通用vi
的 文本缓冲区只有一个,后续的复制剪切操作会覆盖之前缓冲的文本内容
十、替换文本
序号 | 命令 | 英文 | 作用 | 工作模式 |
---|---|---|---|---|
01 | r | replace | 替换当前光标 所在的字符 | 命令模式 |
02 | R | replace | 替换当前光标 所在行后的字符 | 替换模式 |
Explain:
- 在命令模式下, 对文本进行轻量级的修改
十一、缩排文本
序号 | 命令 | 作用 |
---|---|---|
01 | >> | 在当前光标位置 向右增加缩进 |
02 | << | 在当前光标位置 向左减少缩进 |
03 | . | 在当前光标位置 重复上次命令 |
Explain:
- 在程序中,缩进 通常用来表示代码的归属关系
- 在可视模式下, 只需要一个
>
or<
即可进行缩排
十二、查找文本
序号 | 命令 | 作用 |
---|---|---|
01 | :set hls | 打开 关键词高亮 |
02 | :set nohls | 关闭 关键词高亮 |
03 | /XXX | 向下 查找关键词 |
04 | ?XXX | 向上 查找关键词 |
05 | n | 查找 下一个 关键词 |
06 | N | 查找 上一个 关键词 |
07 | * | 高亮当前光标所在单词并 向下 查找 |
08 | # | 高亮当前光标所在单词并 向上 查找 |
Explain:
- 查找文本 不存在的 内容即可 关闭 关键词高亮
十三、查找替换
序号 | 命令 | 作用 |
---|---|---|
01 | :%s/old/new/g | 一次性 替换文件中 所有出现的旧文本 |
02 | :s/old/new/g | 选中可视范围 ,替换范围内 所有出现的旧文本 |
03 | :%s/old/new/gc | 提示性 替换文件中 所有出现的旧文本 |
Explain:
- 以下为提示命令说明
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | y | yes | 确定 |
02 | n | no | 取消 |
03 | a | all | 全部 |
04 | q | quit | 退出 |
05 | l | last | 行首 |
06 | ^E | 向下滚屏 | |
07 | ^Y | 向上滚屏 |
十四、插入文本
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | i | insert | 在光标所在 位置前 插入字符 |
02 | I | insert | 在光标所在 行首前 插入字符 |
03 | a | append | 在光标所在 位置后 插入字符 |
04 | A | append | 在光标所在 行尾后 插入字符 |
05 | o | 在光标所在 的下行 插入空行 | |
06 | O | 在光标所在 的上行 插入空行 |
十五、分屏窗口
- 末行命令扩展
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | :e . | edit | 打开内置的 文件浏览器 ,显示当前目录文件 |
02 | :n 文件名 | new | 在当前目录, 新建文件 |
03 | :w 文件名 | write | 在当前目录, 另存为文件 ,不切换编辑文件 |
- 分屏命令使用
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | :sp 文件名 | split | 横向 增加分屏 |
02 | :vsp 文件名 | vertical split | 纵向 增加分屏 |
Explain:
- 切换文件之前,必须保证当前编辑文件 已保存
- 可以使用
03
进行 阶段性备份代码 - 以下为窗口命令说明
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
01 | Ctrl + w + w | window | 切换 下一窗口 |
02 | Ctrl + w + r | reverse | 互换 窗口位置 |
03 | Ctrl + w + c | close | 关闭 当前窗口 |
04 | Ctrl + w + q | quit | 退出 当前窗口 |
05 | Ctrl + w + o | other | 关闭 其他窗口 |