vi编辑器
-
- 前言
- 一、基础知识
-
- [1.1 使用场景](#1.1 使用场景)
- [1.2 vi 和 vim 的关系](#1.2 vi 和 vim 的关系)
- 二、快速入门
-
- [2.1 启动与退出](#2.1 启动与退出)
- [2.2 三种常用模式](#2.2 三种常用模式)
- [2.3 创建与编辑文件](#2.3 创建与编辑文件)
- 三、插入模式
-
- [3.1 进入方法](#3.1 进入方法)
- 四、命令模式
-
- [4.1 光标移动](#4.1 光标移动)
- [4.2 文本编辑操作](#4.2 文本编辑操作)
- [4.3 撤销操作](#4.3 撤销操作)
- 五、尾行模式
-
- [5.1 查找与替换](#5.1 查找与替换)
- [5.2 显示行号](#5.2 显示行号)
- [5.3 退出](#5.3 退出)
- 结语

🎬 博主名称: 超级苦力怕
🔥 相关专栏: 《Linux 基础》
🚀 每一次思考都是突破的前奏,每一次复盘都是精进的开始!
前言
在很多时候,VSCode 可以替代 vi 这种命令行编辑器了,使用也更加方便。但考虑到特殊场景,如服务器的环境上,一般没有图形界面和图形化编辑器,只能通过命令行操作,而 vi 编辑器就是最常用的命令行编辑器。
一、基础知识
1.1 使用场景
当在服务器上遇到了一些问题,需要查看某个日志文件来排查原因,或者需要定位某个错误的位置,找到错误之后可能还需要修改某个配置文件等。这时如果不会使用 vi,排查和解决问题的效率会非常低下。
常用人员:开发人员、运维人员。
1.2 vi 和 vim 的关系
vi 编辑器是 Unix 系统下的一款文本编辑器,而 vim 是 vi improved 的缩写,是 vi 编辑器的增强版。它们的使用方法基本一样,只是 vim 在 vi 的基础上增加了新功能和改进。通常我们会安装 vim,在命令行使用 vi 命令实际上会直接启动 vim。
二、快速入门
2.1 启动与退出
打开命令行,输入 vi 或 vim,即可进入 Vim 的启动界面,其中会显示版本等基础信息。输入 :q 可退出并返回命令行。

2.2 三种常用模式
在 vi 中有三种常用模式:
- 命令模式:默认进入的模式,可执行复制、粘贴、删除、移动光标等操作。
- 插入模式:可输入和编辑文本内容。
- 尾行模式:用于保存、退出、查找、替换等操作。
不同模式之间可通过快捷键切换。进入 Vim 后默认处于命令模式,输入 : 即进入尾行模式。

2.3 创建与编辑文件
除了直接输入 vi,也可通过 vi 文件名 打开文件。若文件不存在,则会新建一个文件。
bash
vi hello.txt
目标:编写 hello world 和 hello vim

可以 i 进入插入 模式,输入 hello world!,此时左下角显示为插入模式。

按 Esc 返回命令模式,再按 o 插入下一行,输入 hello vim!,按o的时候也会进入插入模式

按Esc返回命令模式,最后输入 :wq 保存并退出。
输入 ls 可以查看当前目录文件,输入 cat hello.txt 查看文件内容:

三、插入模式
3.1 进入方法
插入模式是 vi 中用于输入和编辑文本的核心模式。在命令模式下,可以通过以下快捷键进入插入模式:
| 操作 | 说明 |
|---|---|
i |
在光标所在位置前插入 |
I |
在当前行的行首插入 |
a |
在光标所在位置后插入 |
A |
在当前行的行尾插入 |
o |
在当前行的下方新建一行并插入 |
O |
在当前行的上方新建一行并插入 |

进入插入模式后,左下角通常会显示 -- INSERT -- 提示,此时可直接输入文本。按 Esc 键即可返回命令模式。
快速理解
i与a的区别:i在光标前插入,a在光标后插入,可以想象成i(insert)是"插在前面",a(append)是"附在后面"。I与A分别对应行首和行尾,适合快速定位输入位置。o与O则用于快速在上下行间插入新行,无需先移动到行首或行尾再换行。
四、命令模式
命令模式是默认进入的模式,可以进行移动光标 、文本编辑等功能,这里介绍命令模式常用的快捷键与操作,方便快速上手使用
4.1 光标移动
关于光标移动,vi 编辑器有着许多的快捷键,他们分别对应着上下左右,上下快速移动的效果。
| 常见操作 | 说明 |
|---|---|
H、J、K、L |
分别代替 ←、↓、↑、→ |
^ |
跳转到行首 |
$ |
跳转到行尾 |
gg |
跳转到第一行 |
G |
跳转到最后一行 |
100G |
跳转到第 100 行 |
:50 |
跳转到第 50 行(在命令模式下输入) |
Ctrl + f |
向前翻页 |
Ctrl + b |
向后翻页 |
Ctrl + u |
向上翻半页 |
Ctrl + d |
向下翻半页 |
快速理解
- 在扑克牌中,J 比较小,因此为下,K比较大,因此为上,至于 H 和 L,本身就在键盘左右,对标左和右
^与$的应用场景很多,可以参考正则表达式,使用这两个符号表示开头结尾- G 代表 Go,单独使用
G跳转到最后一行,配合数字,如100G跳转到指定行- f、b、u、d 分别为 forward(向前) 、 backword(向后) 、 up(向上) 、 down(向下) ,加上【Ctrl】快捷键,向指定方向翻页
4.2 文本编辑操作
| 操作 | 说明 |
|---|---|
x |
删除当前字符 |
yy |
复制当前行 |
dd |
删除当前行(但可以粘贴) |
p |
粘贴 |
2yy |
复制两行 |
3p |
粘贴三次 |
4.3 撤销操作
| 操作 | 说明 |
|---|---|
u |
撤销上一次操作 |
U |
撤销对当前行的修改 |
快速记忆
- u 是 undo(取消) 的缩写
五、尾行模式
尾行模式可以在命令模式使用:进入,常用于保存、退出、查找替换等操作,这里介绍尾行模式下常用的命令与操作
5.1 查找与替换
在 vi 编辑器中,我们使用命令的方式进行查找替换,常用命令如下。
| 操作 | 说明 |
|---|---|
/hello |
从光标处向下查找 "hello" |
?hello |
从光标处向上查找 "hello" |
n |
相对于当前方向查找下一个 |
N |
相对于当前方向查找上一个 |
/hello\c |
忽略大小写查找 "hello" |
:10,20s/Hello/World/g |
替换 10 到 20 行所有的Hello为World |
快速记忆
/和?相比,/ 像一条向下的斜线,寓意"向下查找",?像一个钩子向上勾,寓意"向上查找"- n 是 next (下一个) 的缩写,因此为查找下一个,如果使用的是
/,会继续向下查找一个目标,如果使用?,会向上继续查找一个目标- c 是 case (大小写) 的缩写,\ 代表特殊选项,\c 合二为一,代表忽略大小写
- 在尾行模式,可以通过
:set ignorecase或(:set ic)选择全局忽略大小写- 替换格式 :
[范围]s/旧内容/新内容/[g](省略范围则默认为当前行,不加g则只替换每行第一个匹配项)
5.2 显示行号
在阅读大量文本时,可以通过行号来确定位置。
| 操作 | 说明 |
|---|---|
:set number 或 :set nu |
显示行号 |
:set nonumber |
取消行号 |

5.3 退出
在编辑文件完成后,我们可以选择是否保存退出
| 命令 | 说明 |
|---|---|
:q |
退出 |
:w |
保存 |
:wq |
保存退出 |
:wq! |
强制保存退出 |
补充 :在命令模式下,可以通过快捷键【shift + zz】,快速保存退出
快速理解
- q 代表 quit (退出)
- w 代表 write(书写),代表是否写入(保存)
结语
至此,我们已经系统地学习了 vi 编辑器的三大核心模式------命令模式、插入模式与尾行模式,掌握了从光标移动到文本编辑、从查找替换到保存退出的常用操作。
简单回顾:
- 三种模式 :命令模式(默认,执行操作)、插入模式(编辑文本)、尾行模式(保存/查找替换)
2.常用操作 :i/o进入插入,dd/yy/p实现删除复制粘贴,/进行查找,:wq保存退出,这些基本命令足以应对绝大多数场景- 进阶技巧 :显示行号(
:set nu)、行内跳转(^/$)、跨行跳转(gg/G)以及查找替换的灵活运用,能显著提升编辑效率。
