5月27日 14:00

Vim 有哪几种模式?怎么切换?

打开 Vim 第一件事:搞懂模式

第一次用 Vim 的人几乎都会遇到同一个问题:明明在敲键盘,屏幕上怎么什么都没出现?原因很简单——Vim 不是你用过的那种编辑器,它有模式。在错误的模式下按键,Vim 不会乖乖输入文字,而是执行命令。这个设计乍看反直觉,但一旦习惯,编辑效率会远超普通编辑器。

Vim 的核心思路是:不同的任务用不同的模式。浏览代码、输入文字、选择区域、执行命令——各有专属模式,按键含义随模式切换而改变。下面逐个说清楚。

普通模式(Normal Mode)

普通模式是 Vim 的默认状态。打开文件后你就处在这个模式里,从任何其他模式按 Esc 也能回到这里。

在普通模式下,键盘上的每个键都是一个命令,而不是要输入的字符:

  • h j k l — 左、下、上、右移动光标
  • x — 删除光标下的字符
  • dd — 删除整行
  • yy — 复制整行
  • p — 粘贴
  • u — 撤销
  • . — 重复上一次操作

普通模式是你待得最久的地方。Vim 的哲学是"浏览多于输入",大部分时间你其实在阅读和导航,偶尔才需要打字。所以普通模式被设为默认,而不是插入模式。

进入方式:启动 Vim 自动进入;任意模式按 EscCtrl+[ 返回。

插入模式(Insert Mode)

这才是"像正常编辑器"的模式——你按什么键,屏幕上就出现什么字符。Vim 窗口左下角会显示 -- INSERT -- 提示你当前在插入模式。

进入插入模式有好几种方式,区别在于光标落点:

按键效果
i在光标前插入
a在光标后插入
I在行首(第一个非空字符前)插入
A在行尾插入
o在当前行下方新开一行并插入
O在当前行上方新开一行并插入
s删除光标下字符并进入插入

实际使用中,iaoA 四个用得最多。A 特别好用——想在行尾追加内容,一个键到位,不用先移光标再按 i

退出方式:按 EscCtrl+[ 回到普通模式。

可视模式(Visual Mode)

可视模式用来选择文本,相当于用鼠标拖选,但效率更高。进入后左下角显示 -- VISUAL --

三种可视模式各有用途:

  • v — 字符可视模式,逐字符选择,适合选中几个词
  • V — 行可视模式,整行整行地选,适合操作连续多行
  • Ctrl+v — 块可视模式,矩形选择,批量缩进、批量加注释时非常好用

选中之后可以紧跟操作:d 删除、y 复制、> 缩进、< 反缩进、: 对选中区域执行命令。

块可视模式有一个经典用法:批量注释。Ctrl+v 选中多行行首,按 I 输入 //#,再按 Esc,选中的行会同时加上注释符号。

退出方式:按 Esc,或再按一次 v/V/Ctrl+v

命令行模式(Command-Line Mode)

在普通模式下按 :(冒号)进入命令行模式,光标跳到屏幕最底部,等待你输入命令。这个模式用于执行保存、退出、替换、设置选项等操作。

常用命令:

  • :w — 保存
  • :q — 退出
  • :wq:x — 保存并退出
  • :q! — 强制退出不保存
  • :%s/old/new/g — 全文替换
  • :set number — 显示行号
  • :!ls — 执行外部 shell 命令(这里是查看目录)

命令输入完按回车执行,执行后自动回到普通模式。如果不想执行,按 Esc 取消。

除了 :,按 / 进入搜索也是一种命令行模式,输入关键词后回车即可跳转匹配位置,按 n 跳到下一个,N 跳到上一个。

替换模式(Replace Mode)

替换模式不像前面四种那么常被提起,但在特定场景下很实用。进入后左下角显示 -- REPLACE --

  • R — 进入替换模式,你输入的每个字符会覆盖光标位置的现有字符,就像很多编辑器里的 Insert 键切换到覆盖模式一样
  • r — 单次替换,替换光标下的一个字符后自动回到普通模式

rR 用得更频繁。比如把一个字母改掉,r 一个键搞定,不用先进插入模式再删再输。

还有一种虚拟替换模式 gR,区别在于 Tab 键的处理——R 会把 Tab 当作一个字符覆盖,gR 则保持 Tab 的对齐逻辑不变。日常用得不多,知道有这回事就行。

退出方式:按 Esc 回到普通模式。

模式切换一览

把上面的关系画出来就是:普通模式是枢纽,所有模式都通过 Esc 回到普通模式,再从普通模式进入其他模式。

shell
普通模式 ←Esc← 插入模式 (i/a/o...) ↓↑ ↓Esc →→ : → 命令行模式 ↓↑ →→ v/V/Ctrl+v → 可视模式 ↓↑ →→ R → 替换模式

一个实用建议:如果你不确定当前在什么模式,连按两下 Esc,肯定回到普通模式。养成这个习惯,比记住所有快捷键都管用。

从模式思维开始

Vim 的模式系统不是负担,而是它高效的根本原因。普通模式让导航和编辑共用键盘,不用频繁碰鼠标;插入模式专注输入;可视模式批量操作;命令行模式处理全局事务;替换模式精确覆盖。搞清楚每种模式做什么、怎么进怎么出,剩下的就是肌肉记忆的事了。打开终端,输入 vimtutor,花三十分钟走一遍内置教程,比看十篇文章都管用。

标签:Vim