You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vim中非连续多行不同文本区域的选择与替换方法

嘿,这个需求在Vim里完全能搞定,我给你分三种实用方式来讲——原生Vim就能实现的方案、高效的宏批量操作,还有更直观的插件辅助玩法,完美适配你的场景:

原生Vim实现非连续多区域选择与替换

原生Vim自带多选区标记功能,咱们一步步来操作:

  1. 标记所有需要修改的非连续区域

    • 你现在光标在Roses的R上,先跳到第一个错误单词reed:按3w(跳3个单词),然后用viw选中整个单词(viw是Vim里选中当前单词的神技,记住它!)
    • 现在进入了可视化模式,按g Ctrl-G(先按g,再按住Ctrl按G),这就给当前选区打了标记,接下来可以放心移动光标去选下一个区域了
    • 跳到第二行:按j,然后2w跳到aree的开头,viw选中,再按g Ctrl-G标记第二个选区
    • 继续处理剩下的两个错误:
      • 按j到第三行,w跳到Sugaar开头,viw选中,g Ctrl-G标记
      • 按j到第四行,3w跳到you,开头,viw选中,g Ctrl-G标记
        到这里,四个非连续的错误区域就都被标记选中啦!
  2. 逐个替换成不同内容

    • 按Esc退出可视化模式,然后按g Ctrl-G就能循环切换到每个标记的选区位置(每按一次跳一个)
    • 跳到第一个选区(reed)时,按c删除选中的内容,输入red, yellow and green,按Esc完成第一个替换
    • 再按g Ctrl-G跳到第二个选区(aree),按c删除后输入are,Esc
    • 重复这个操作,就能依次把剩下的两个错误内容替换成对应的文本

如果是要把所有选中区域替换成相同内容,那就更简单了:选中所有非连续区域后,直接按c输入替换内容,所有选中的区域会一次性被替换成一样的文本。


用宏快速批量处理(适合按顺序操作)

如果觉得标记选区有点繁琐,还可以用Vim的宏功能来一键完成所有修改:

  1. 录制宏

    • 按q a(意思是把宏录制到寄存器a里),开始录制操作:
      • 3w viw c red, yellow and green Esc(处理第一个错误)
      • j 2w viw c are Esc(处理第二个错误)
      • j w viw c Sugar and molasses Esc(处理第三个错误)
      • j 3w viw c you. Esc(处理第四个错误)
    • 按q结束录制
  2. 执行宏

    • 按@a就能一次性执行刚才录制的所有操作,瞬间完成所有替换!

插件辅助:vim-multiple-cursors(更直观的多光标操作)

如果你经常需要处理这类非连续多区域修改,可以装个vim-multiple-cursors插件,操作更直观:

  1. 选中第一个错误单词reed(viw),按Ctrl-n添加一个光标
  2. 移动到第二个错误单词aree的位置,按Ctrl-n再添加一个光标,以此类推,把四个错误位置都加上光标
  3. 现在每个光标都在对应的错误区域,你可以逐个切换光标(按Ctrl-p/Ctrl-n切换),然后按c删除内容并输入对应的替换文本

内容的提问来源于stack exchange,提问作者mahbubweb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:11:30