Skip to content

点命令进阶:重复的艺术

. 命令是 Vim 效率的核心。掌握它,你会发现很多重复操作只需要一个按键。

点命令基础

什么是点命令

. 重复上一次修改操作。关键词是修改

  • dd 删除行 → . 再删除一行
  • cw 改单词 → . 改下一个单词
  • A; 行尾加分号 → . 下一行加分号
  • j 向下移动 → . 不会移动(移动不是修改)

一次修改的定义

从进入插入模式到回到普通模式,算一次修改

1. ciw 进入插入模式
2. 输入 newValue
3. Esc 回到普通模式

这整个过程是一次修改,. 会重复 ciwnewValue<Esc>

设计可重复的操作

原则:组合命令

低效写法:

1. i 进入插入模式
2. 删除字符
3. 输入新内容
4. Esc

高效写法:

1. ciw 直接改变整个单词
2. 输入新内容
3. Esc

后者形成的"原子操作"可以被 . 完整重复。

示例:给多行加分号

低效:

A;Esc j A;Esc j A;Esc ...

高效:

A;Esc    第一行加分号
j.       下一行,重复
j.       下一行,重复

示例:删除多个单词

低效:

dw dw dw dw

高效:

dw      删除第一个
...     重复三次

或者:

4dw     直接删除 4 个

. 命令的威力场景

场景 1:批量改变量名

javascript
const oldName = 1;
console.log(oldName);
return oldName;

操作:

1. /oldName 搜索
2. cgn 改变当前匹配
3. 输入 newName
4. Esc
5. . 改变下一个匹配
6. . 继续

cgn. 命令的最佳搭档。

场景 2:批量添加内容

给多行添加前缀:

javascript
item1
item2
item3

变成:

javascript
- item1
- item2
- item3

操作:

1. I- <Space>Esc   第一行加前缀
2. j.              下一行重复
3. j.              继续

场景 3:批量删除

删除多个 if 块:

1. /if 搜索
2. dap 删除段落
3. n. 下一个匹配,删除
4. n. 继续

场景 4:批量包裹

给单词加引号:

apple → "apple"

使用 vim-surround:

1. ysiw" 给单词加引号
2. w. 下一个单词,重复

cgn 模式详解

cgn. 命令的超级组合:

c     change(改变)
gn    下一个搜索匹配

工作流:

1. /pattern 搜索
2. cgn 改变当前匹配
3. 输入新文本
4. Esc
5. . 自动跳到下一个匹配并替换

cgn vs 搜索替换

场景cgn:%s
全部替换需要多次 .一次完成
选择性替换按 . 替换,按 n 跳过需要确认模式
需要不同替换可以改变输入固定替换文本

cgn 的优势:选择性灵活性

不可重复的操作

这些操作 . 无法重复:

- 移动命令:j, k, w, b, f, t
- 搜索命令:/, ?, n, N
- 标记命令:m{a-z}
- 撤销命令:u, Ctrl+r

设计可重复工作流

思路:让操作原子化

坏习惯

1. v 进入可视
2. e 选到词尾
3. d 删除

好习惯

1. de 直接删除到词尾

后者可以 . 重复,前者不行。

思路:先移动后操作

1. 移动到目标位置(不算修改)
2. 执行操作(算修改)
3. 移动到下一个位置
4. . 重复操作

示例:处理参数列表

javascript
function fn(aaa, bbb, ccc, ddd) {}

改为:

javascript
function fn(a, b, c, d) {}

操作:

1. f( 跳到括号
2. l 进入参数区域
3. ct, 改变到逗号前
4. 输入 a
5. Esc
6. f, 跳到下一个逗号
7. l. 跳过逗号,重复修改
8. 继续...

撤销与点命令

. 重复上次修改,u 撤销上次修改。

它们是相反的操作:

1. dd 删除行
2. . 再删除一行
3. u 撤销(恢复一行)
4. u 再撤销(恢复另一行)

计数与点命令

可以用计数执行多次 .

5.     执行 5 次点命令

实战技巧汇总

技巧 1:进入插入模式的选择

命令场景可重复性
i在光标前插入
a在光标后插入
I行首插入
A行尾插入
o下方新行
O上方新行
s删除字符并插入
C删除到行尾并插入

选择正确的进入方式,让后续 . 更有效。

技巧 2:文本对象的威力

ciw   改变单词
ci"   改变引号内
ci(   改变括号内
cit   改变标签内

这些都形成完整的可重复操作。

技巧 3:计划你的按键

在按键之前想一想:

  • 这个操作需要重复吗?
  • 如何让它可被 . 重复?
  • 用什么命令最合适?

本章收获

  • ✅ 深入理解 . 命令的工作原理
  • ✅ 学会设计可重复的操作
  • ✅ 掌握 cgn 模式的威力
  • ✅ 培养"为重复而设计"的思维

效率提升:一次思考,设计好操作;然后用 . 无脑重复,效率翻倍。

点命令进阶:重复的艺术 has loaded