Vim中如何逐个定位匹配模式并选择性批量替换?
在Vim中实现类似Sublime Ctrl+D的逐个选择修改功能
嘿,刚好能帮你解决这个问题!Vim里确实有一套操作可以实现像Sublime那样逐个选中目标匹配项,灵活选择修改/跳过,完全满足你精准修改指定<div>标签的需求。下面是具体步骤和技巧:
核心操作流程
第一步:定位并高亮所有匹配项
先输入查找命令定位你的目标模式,比如要找<div>:/<div>按回车后,第一个匹配项会被定位,同时所有匹配项默认会高亮(如果没高亮,输入
:set hlsearch开启)。第二步:逐个选中匹配项
用vgn命令选中当前光标所在的匹配项(v是进入可视化模式,gn是专门选中下一个匹配模式的文本)。- 如果当前项需要修改,直接进行操作;
- 如果要跳过当前项,按
n跳转到下一个匹配项,再按gn选中它即可。
重复这个“跳转-选中”的过程,就能精准挑选出所有你需要修改的目标。
第三步:修改选中的内容
选中目标后,根据你的需求选择操作:- 直接替换:按
c进入修改模式,输入你要替换的内容(比如<p>),按Esc完成修改;所有已选中的匹配项会被一次性替换! - 删除后插入:按
d删除选中内容,再按i进入插入模式输入新内容。
- 直接替换:按
针对你的示例场景的具体操作
以你提供的三个<div>标签为例,想要跳过第二个修改第一和第三个:
- 输入
/<div>定位第一个匹配项; - 按
vgn选中第一个<div>; - 按
n跳转到第二个<div>,跳过不选中; - 按
n跳转到第三个<div>,再按gn选中它; - 现在第一和第三个
<div>都被选中了,按c输入<p>,按Esc,这两个标签就都替换完成了!
额外实用技巧
- 取消高亮:如果高亮影响视线,输入
:nohlsearch(可以缩写成:noh)快速取消; - 反向跳转:按
N可以跳转到上一个匹配项; - 调整选择:如果选错了,按
v退出可视化模式,重新选择即可。
这种方式比:%s///gc更灵活,因为它允许你非连续地选择匹配项,而正则替换的c选项只能逐个确认连续的匹配,完全符合你要的精准修改需求!
内容的提问来源于stack exchange,提问作者jedi
相关产品推荐
相关产品推荐

