Skip to content

可视模式:精确选择技术

可视模式是 Vim 的选择机制。与鼠标拖拽选择相比,可视模式提供了三种选择方式,配合动作命令可以精确高效地选中目标区域。

三种可视模式

命令模式选择方式
v字符可视按字符选择
V行可视按整行选择
Ctrl+V块可视按矩形块选择

字符可视模式 (v)

v 进入后,移动光标扩展选区。

配合动作

viw    选中当前单词
vi"    选中引号内的内容
vi{    选中大括号内的内容
vip    选中当前段落
v$     选中到行尾
v/end  选中到 "end" 匹配处

实战演示

选中函数调用的参数:

typescript
const result = calculate(a, b, c);
//                       ↑ 光标在 a
//                       vi) → 选中 a, b, c

选中对象的值:

typescript
const config = { name: "app", version: "1.0" };
//                     ↑ 光标在 "app" 内
//                     vi" → 选中 app(不含引号)
//                     va" → 选中 "app"(含引号)

行可视模式 (V)

V 进入后,按整行扩展选区。

Vj     选中当前行和下一行
V5j    选中当前行及往下 5 行
Vip    选中当前段落(所有行)
V/}    选中到包含 } 的行

常见用途

  • 快速选中多行进行删除、复制
  • 选中函数体进行缩进调整
  • 选中代码块进行移动

块可视模式 (Ctrl+V)

Ctrl+V 进入矩形选择模式,选中一个矩形区域。

注意:在 VSCode 中,Ctrl+V 默认是粘贴。需要配置 Vim 接管:

json
{
  "vim.handleKeys": {
    "<C-v>": true
  }
}

矩形选择用法

1. Ctrl+V 进入块可视模式
2. j/k 上下扩展
3. h/l 左右扩展
4. 选中一个矩形区域

批量编辑

块可视模式的杀手级功能是批量编辑:

1. Ctrl+V 选中矩形区域
2. I(大写)在每行开头插入
3. 输入内容
4. Escape
5. 所有选中行都添加了相同内容

例如,批量添加注释:

javascript
line1
line2
line3
line4
1. Ctrl+V
2. 3j(选中 4 行)
3. I// (输入注释符)
4. Escape

结果:

javascript
// line1
// line2
// line3
// line4

同理,A(大写)在每行末尾追加。

可视模式操作

选中后可以执行的操作:

命令效果
dx删除选中内容
c删除选中内容并进入插入模式
y复制选中内容
>增加缩进
<减少缩进
=自动格式化缩进
u转换为小写
U转换为大写
~切换大小写
J合并为一行
:对选中范围执行命令

扩展和收缩选区

选中后,可以调整选区:

命令效果
o切换到选区另一端
O在块可视模式中,切换到同侧另一角

o 非常有用——如果你选多了或少了,o 跳到另一端调整。

重新选择上次选区

gv    重新选中上次选择的区域

场景:执行了一个操作后,想对同样区域再执行另一个操作:

1. viw 选中单词
2. U 转大写
3. gv 重新选中
4. y 复制

选择并操作文本对象

最强大的用法是结合文本对象:

vi{    选中大括号内
va{    选中大括号及内容
viB    同 vi{
vi[    选中方括号内
vi(    选中圆括号内
vi"    选中双引号内
vi'    选中单引号内
vi`    选中反引号内
vit    选中 HTML 标签内
vat    选中 HTML 标签及内容
vip    选中段落
viw    选中单词
vas    选中句子

实战技巧

技巧 1:选中函数体

typescript
function example() {
  // 很多行代码
}

光标在函数体内时:

Vi{ → 选中整个函数体(不含大括号)
Va{ → 选中整个函数体(含大括号)

技巧 2:选中 JSX 元素

jsx
<div className="container">
  <span>Hello</span>
</div>

光标在 div 标签内时:

vit → 选中 div 标签内的内容
vat → 选中整个 div 标签

技巧 3:批量缩进

1. V 选中多行
2. > 增加缩进
3. . 重复(再增加)

或者:

1. V 选中
2. 3> 增加 3 级缩进

技巧 4:快速复制当前行

V y → 选中当前行并复制
yy  → 同样效果,更快

配置建议

确保块可视模式可用:

json
{
  "vim.handleKeys": {
    "<C-v>": true
  }
}

如果需要保留 Ctrl+V 粘贴功能,可以在插入模式中保留:

json
{
  "vim.insertModeKeyBindings": [
    {
      "before": ["<C-v>"],
      "commands": ["editor.action.clipboardPasteAction"]
    }
  ]
}

本章收获

  • ✅ 掌握三种可视模式
  • ✅ 学会配合动作和文本对象选择
  • ✅ 熟悉选中后的操作命令
  • ✅ 掌握块可视模式的批量编辑

效率提升:精确选择 + 快速操作,告别鼠标拖拽的低效选择方式。

可视模式:精确选择技术 has loaded