vi 是Linux系统内置的纯文本编辑器,vim是vi的增强版,兼容所有的vi操作且增加了语法高亮,代码补全,行号显示等实用功能,差不多几乎所有Linux发行版都预装,是运维,开发必备工具。

vi vim的核心是模式切换,不同模式对应不同操作,如果是新手的话最容易踩坑的就是模式混淆,请记得三个核心模式及切换方式

命令模式(Normal Mode)

  • 默认模式:打开 vi/vim 后直接进入,也是其他模式返回的最终模式。
  • 核心作用:移动光标、删除 / 复制 / 粘贴文本、撤销 / 重做操作、切换其他模式。
  • 外观特征:终端无光标闪烁,输入字符会执行对应命令(而非插入文本)。

2. 插入模式(Insert Mode)

  • 核心作用:编辑、输入、修改文本,和记事本 / VS Code 的普通编辑模式一致。
  • 进入方式:命令模式下按 i/a/o/I/A/O(6 种方式,按需选择)。
  • 退出方式:按 Esc 键,直接返回命令模式(最常用,牢记)。
  • 外观特征:终端左下角显示 -- INSERT --,光标闪烁,输入字符直接显示在文本中。

3. 末行模式(Command-line Mode)

  • 核心作用:执行保存、退出、查找替换、行号显示、文件跳转等高级命令,所有命令以冒号 : 开头。
  • 进入方式:命令模式下按 :///?/?用于快速查找,也属于末行模式衍生)。
  • 退出方式:按 Esc 键返回命令模式,或执行完命令后自动返回。
  • 外观特征:终端最下方出现冒号 :,光标在冒号后闪烁,输入命令按 Enter 执行。

模式快速切换总结(必背)

plaintext

命令模式 ←(Esc)→ 插入模式
命令模式 ←(Esc)→ 末行模式
插入模式 ❌ 直接切换到 末行模式(必须先按Esc回命令模式)

新手口诀:打开先别动(命令模式),要编辑按 i(插入模式),要保存按 Esc+:w(回命令模式→末行模式)。

. 命令模式 → 输入模式(6 种常用,按需选)

命令模式下按以下按键,直接进入输入模式,光标位置略有差异:

按键 进入输入模式后光标位置 适用场景
i 光标当前位置 光标处直接插入
I 光标所在行首 行首开始输入
a 光标当前位置 光标后追加内容
A 光标所在行尾 行尾补充内容
o 光标下方新建一行 另起一行输入(常用)
O 光标上方新建一行 向上插入新行

2. 输入模式 → 命令模式(唯一)

输入模式下按 Esc,左下角 -- INSERT -- 消失,即刻回到命令模式(若按一次没反应,可连续按 2 次)。

3. 命令模式 → 末行模式(唯一)

命令模式下按 :,左下角出现冒号 :,进入末行模式,可输入各类指令(如保存、退出)。

4. 末行模式 → 命令模式(两种)

  • 执行完末行指令(如按回车确认),自动回到命令模式;
  • 未执行指令时,按 Esc,直接退出末行模式回到命令模式。

二、末行模式常用指令(配合切换使用)

末行模式下输入以下指令,按回车执行,完成后回到命令模式,是编辑后保存 / 退出的核心操作:

指令 功能 适用场景
:w 保存文件(不退出) 编辑中阶段性保存
:w 文件名 另存为指定文件 备份文件内容
:q 退出编辑器(无未保存修改) 确认内容无需保存时
:q! 强制退出(放弃所有未保存修改) 编辑错误,无需保留内容
:wq / :x 保存并退出(两者功能一致) 编辑完成,正常保存退出(常用)
:set nu 显示行号 定位行、批量编辑时
:set nonu 隐藏行号 取消行号显示

三、vim 拓展:可视化模式(Visual Mode)

vim 在 vi 基础上增加可视化模式,用于选中批量内容(复制、删除、粘贴),左下角会显示 -- VISUAL --,切换基于命令模式

1. 命令模式 ↔ 可视化模式

  • 命令模式按 v字符可视化(逐字符选中,常用);
  • 命令模式按 V行可视化(整行选中,批量操作行时高效);
  • 命令模式按 Ctrl + v块可视化(矩形块选中,适用于表格、批量注释);
  • 可视化模式按 Esc:直接回到命令模式。

2. 可视化模式常用操作

选中内容后,直接在可视化模式下执行:

  • y:复制选中的内容;
  • d:删除选中的内容;
  • p:将复制 / 删除的内容粘贴到光标后。

四、高频切换速记口诀(新手必备)

plaintext

打开默认命令模,i/a/o进输入模;
Esc一键回命令模,冒号:进末行模;
保存w退出q,强制加!,保存退出wq/x;
vim可视化v/V/Ctrl+v,选中操作y复制d删除。

五、常见切换误区

  1. 忘记切换英文输入法:中文输入法下的Esc/:/i等按键无效,会导致模式切换失败;
  2. 输入模式直接按:: 不会进入末行模式,只会输入冒号字符,需先按Esc回命令模式;
  3. 末行模式未按回车:输入指令后必须按回车执行,否则指令无效,仅按Esc会退出末行模式。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐