-
Notifications
You must be signed in to change notification settings - Fork 0
nvim workflow replace and refactor
ES edited this page Jul 20, 2026
·
1 revision
这篇讲两类高频操作:
- 在文件或工作区里批量替换
- 给文本加、删、换包裹符号
前者主要靠 vv-replace,后者主要靠 mini.surround
| 快捷键 | 模式 | 作用 |
|---|---|---|
<leader>sr |
Normal | 当前文件替换 |
<leader>sR |
Normal | 整个工作区替换 |
<leader>sr |
Visual | 用选区内容做搜索词,在当前文件替换 |
<leader>sR |
Visual | 用选区内容做搜索词,在工作区替换 |
<leader>sv |
Visual | 只在当前选区范围内替换 |
只改当前文件
适合:
- 当前组件里统一改 prop 名
- 当前文件里变量名、文案、class 名要批量调整
改整个工作区
适合:
- 跨文件 rename 某个字符串
- 改接口路径
- 改 i18n key 字符串
- 改某个约定名字
经验上:
- 能局部就先局部,用
sr - 确认影响面跨文件,再上
sR
这是这套替换工作流最值得记的地方
“把这段选区内容当作搜索词,在当前文件里替换”
“把这段选区内容当作搜索词,在整个工作区里替换”
“只在这块选区范围里替换”
也就是说:
-
sr / sR更偏“拿选中的文本做 query” -
sv更偏“把选区当作用范围”
原生替换依然适合:
- 一两行的快速替换
- 你已经非常熟悉 Vim 命令
比如:
:s/old/new/:%s/old/new/gcgn
但 vv-replace 更适合:
- 你要看结果列表
- 你要跨文件替换
- 你要以“面板工作流”而不是命令行记忆来完成替换
可以把它理解成更接近 VS Code 的搜索替换面板
| 快捷键 | 作用 |
|---|---|
gsa |
添加包裹 |
gsd |
删除包裹 |
gsr |
替换包裹 |
gsf / gsF
|
查找右侧 / 左侧包裹 |
gsh |
高亮当前包裹 |
-
gsaiw":给当前单词加双引号 -
gsaiw):给当前单词加括号
可以理解为:
-
gsa= add surround -
iw= inner word
把光标放在包裹内部,然后:
-
gsd"删除双引号 -
gsd)删除括号 -
gsdt删除标签
-
gsr"':把双引号换成单引号 -
gsr)]:把括号换成中括号 -
gsrt:替换标签
这对写 HTML / JSX 很有用
-
gsat:加标签 -
gsdt:删标签 -
gsrt:换标签
比如给当前节点包一层 div,直接走 gsat
- 当前文件先
<leader>sr - 跨项目再
<leader>sR
- 加一层标签:
gsat - 改标签名:
gsrt
- 优先用
gsr - 不要手动删再手动补