【Linux精讲|第1章】Vi 编辑器核心三模式——命令、插入、尾行全解析

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 启动与退出

打开命令行,输入 vivim,即可进入 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 键即可返回命令模式。

快速理解

  • ia 的区别:i 在光标前插入,a 在光标后插入,可以想象成 i(insert)是"插在前面",a(append)是"附在后面"。
  • IA 分别对应行首和行尾,适合快速定位输入位置。
  • oO 则用于快速在上下行间插入新行,无需先移动到行首或行尾再换行。

四、命令模式

命令模式是默认进入的模式,可以进行移动光标文本编辑等功能,这里介绍命令模式常用的快捷键与操作,方便快速上手使用

4.1 光标移动

关于光标移动,vi 编辑器有着许多的快捷键,他们分别对应着上下左右,上下快速移动的效果。

常见操作 说明
HJKL 分别代替 ←、↓、↑、→
^ 跳转到行首
$ 跳转到行尾
gg 跳转到第一行
G 跳转到最后一行
100G 跳转到第 100 行
:50 跳转到第 50 行(在命令模式下输入)
Ctrl + f 向前翻页
Ctrl + b 向后翻页
Ctrl + u 向上翻半页
Ctrl + d 向下翻半页

快速理解

  1. 在扑克牌中,J 比较小,因此为下,K比较大,因此为上,至于 H 和 L,本身就在键盘左右,对标左和右
  2. ^$ 的应用场景很多,可以参考正则表达式,使用这两个符号表示开头结尾
  3. G 代表 Go,单独使用 G 跳转到最后一行,配合数字,如100G跳转到指定行
  4. 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 行所有的HelloWorld

快速记忆

  1. /? 相比,/ 像一条向下的斜线,寓意"向下查找",? 像一个钩子向上勾,寓意"向上查找"
  2. n 是 next (下一个) 的缩写,因此为查找下一个,如果使用的是 /,会继续向下查找一个目标,如果使用 ?,会向上继续查找一个目标
  3. c 是 case (大小写) 的缩写,\ 代表特殊选项,\c 合二为一,代表忽略大小写
  4. 在尾行模式,可以通过 :set ignorecase 或(:set ic)选择全局忽略大小写
  5. 替换格式[范围]s/旧内容/新内容/[g](省略范围则默认为当前行,不加 g 则只替换每行第一个匹配项)

5.2 显示行号

在阅读大量文本时,可以通过行号来确定位置。

操作 说明
:set number:set nu 显示行号
:set nonumber 取消行号

5.3 退出

在编辑文件完成后,我们可以选择是否保存退出

命令 说明
:q 退出
:w 保存
:wq 保存退出
:wq! 强制保存退出

补充 :在命令模式下,可以通过快捷键【shift + zz】,快速保存退出

快速理解

  1. q 代表 quit (退出)
  2. w 代表 write(书写),代表是否写入(保存)

结语

至此,我们已经系统地学习了 vi 编辑器的三大核心模式------命令模式、插入模式与尾行模式,掌握了从光标移动到文本编辑、从查找替换到保存退出的常用操作。

简单回顾

  1. 三种模式 :命令模式(默认,执行操作)、插入模式(编辑文本)、尾行模式(保存/查找替换)
    2.常用操作 : i/o 进入插入,dd/yy/p 实现删除复制粘贴,/ 进行查找,:wq 保存退出,这些基本命令足以应对绝大多数场景
  2. 进阶技巧 :显示行号(:set nu)、行内跳转(^/$)、跨行跳转(gg/G)以及查找替换的灵活运用,能显著提升编辑效率。
相关推荐
jinanwuhuaguo3 小时前
OpenClaw v2026.3.22-beta.1 深度技术分析报告:从单智能体操作系统到多智能体协作平台的范式跃迁
运维·人工智能·语言模型·自然语言处理·visual studio code·openclaw
阿虎儿3 小时前
实战教程:使用 Docker 五分钟搭建高性能异地组网 (WireGuard Easy)
运维
大虾别跑4 小时前
麒麟v10搭建rsync
linux·运维·服务器
自动化智库4 小时前
西门子XB208网管型交换机使用方法
运维·服务器·网络
桌面运维家4 小时前
Nginx+Keepalived:Linux高可用负载均衡配置实战
linux·nginx·负载均衡
lbb 小魔仙4 小时前
Portainer 实战:可视化管理 Docker并实现外网访问
运维·docker·容器
CDN3604 小时前
CSDN 运维笔记|360CDN 高防服务器配置与防护规则
运维·服务器·笔记
阿虎儿4 小时前
Ubuntu Server 接入 WireGuard VPN 完整教程
运维
BullSmall4 小时前
LVS与HAProxy高可用负载方案详解
linux·服务器·网络