Appearance
点命令进阶:重复的艺术
. 命令是 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 模式的威力
- ✅ 培养"为重复而设计"的思维
效率提升:一次思考,设计好操作;然后用 . 无脑重复,效率翻倍。