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

Vim中的多种替换操作方法与批量文本处理技巧

Vim 批量转换文件名格式的多种实现方法

以下方法按操作简便度从高到低排序,可根据自己的使用习惯选择:

1. 正则替换(1条命令全量处理,最推荐)

不需要逐行操作,打开文件后直接在普通模式输入以下命令敲回车即可:

:%s/\v(.*\d{3})\..*(\.mkv)$/\1\2/

命令逻辑说明:

  • % 指定作用范围为全文所有行
  • \v 开启正则「魔法模式」,省去大量转义符输入
  • 第一组捕获(.*\d{3}):匹配每行开头到连续3位集数(026/027这类)为止的前缀内容
  • 中间匹配\..*:对应集数后第一个点,以及点之后、后缀之前的所有冗余文本
  • 第二组捕获(\.mkv)$:匹配行尾的.mkv后缀
  • 替换为\1\2就是直接拼接前缀和后缀,自动剔除中间所有多余内容

如果确定所有文件前缀都是固定的Dragon.Ball,还可以把正则写得更精准,避免误匹配:

:%s/\v(Dragon\.Ball\.\d{3}).*(\.mkv)/\1\2/

2. 块可视模式(零正则,手速快2秒搞定)

这个方法适合当前示例场景——所有行的集数位置完全对齐,操作步骤:

  1. 把光标挪到第一行集数(比如026)后面的第一个点上
  2. 按Ctrl+v进入列块选择模式
  3. 按G直接跳到文件最后一行,此时所有行的对应列起始位置都会被选中
  4. 按$跳到行尾,再按4h往左移动4个字符,刚好选中所有行里集数后到.mkv前的冗余块
  5. 按d删除选中内容,直接完成全部修改
    注意:如果不同行的前缀长度不一致,集数位置不对齐,这个方法就不适用。

3. 简化版宏(比常规宏操作效率高很多)

如果觉得宏操作繁琐,大概率是录制时做了太多逐字符移动的操作,结合Vim的查找动作,宏只需要录3-4个动作:

  1. 光标移到第一行行首,按qa开始把宏录制到a寄存器
  2. 按3f.快速跳到行内第三个点的位置(也就是集数后面的第一个点,刚好是冗余内容的起点)
  3. 输入d/.mkv<CR>,删除从当前光标位置到.mkv前的所有内容
  4. 按j跳到下一行,按q结束录制
  5. 剩下4行不需要手动操作,直接按4@a就会自动逐行执行宏完成修改

4. 点命令重复(少量行场景比宏还方便)

如果只有几行内容,连宏都不用录:

  1. 第一行手动改完:光标移到集数后的点,按d/.mkv<CR>完成第一行修改
  2. 后续每一行只需要把光标移到对应行集数后面的点上,按.(重复上次修改命令)就能直接完成该行修改,5行内容10秒内就能处理完。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:57:31