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

Vi/Vim 如何快速复制每行指定符号(如=)左右侧的对应文本

Vim提取指定符号两侧内容的命令方案

场景1:无需保留原文本,直接提取后覆盖原内容

这是操作最简单的方案,直接对全文执行替换命令即可:

  • 提取所有行等号左侧内容:
    执行命令 :%s/=.*//,执行后全文仅保留等号前的内容,直接全选复制即可。
  • 提取所有行等号右侧内容:
    执行命令 :%s/.*=//,执行后全文仅保留等号后的内容,直接全选复制即可。

如果仅需要对部分选中行操作,在视觉模式选中目标行后,输入替换命令时Vim会自动补全选中范围,不需要手动输入%。如果分隔符不是等号,把命令中的=替换为你需要的目标符号即可。

场景2:需要保留原文本,提取内容到寄存器单独粘贴

如果不能修改原文件内容,可以通过寄存器追加的方式提取内容:

  1. 首先清空指定寄存器(以d寄存器为例),普通模式下按 qdq 即可完成清空。
  2. 执行对应提取命令:
    • 提取等号左侧内容:
      执行命令 :g/=/normal! 0yt= "DY
      命令说明:匹配所有包含等号的行,依次跳转到行首,复制到等号前的内容,追加到d寄存器。
    • 提取等号右侧内容:
      执行命令 :g/=/normal! f=l "DY$
      命令说明:匹配所有包含等号的行,依次跳转到等号位置并跳过等号,复制到行尾的内容,追加到d寄存器。
  3. 提取完成后,普通模式下按 "dp 即可将提取到的所有内容粘贴到目标位置。

如果需要直接复制到系统剪贴板,确保你的Vim已开启clipboard支持,将上述命令中的"DY替换为"+Y即可,粘贴时直接用系统粘贴快捷键即可。

场景3:提取内容到新缓冲区

如果需要单独打开一个新窗口存放提取结果,无需修改原文件也不用手动粘贴,可以直接执行命令:

  • 提取左侧内容到新窗口:
    :new | put =map(filter(getbufline('%',1,'$'),'v:val =~ "="'),'trim(split(v:val, "=")[0])')
  • 提取右侧内容到新窗口:
    :new | put =map(filter(getbufline('%',1,'$'),'v:val =~ "="'),'trim(split(v:val, "=")[1])')

命令中的trim作用是自动去除内容前后的空白字符,不需要可以去掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:06:01