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

如何在Vim中批量删除所有行里冒号至行尾的内容?

Vim批量删除行内从:到行尾的方法

以下是几种无需重复单行操作的批量处理方案:

1. 全局替换命令(最快捷)

直接用Vim的全局替换功能一次性处理所有行:

:%s/:.*//
  • % 表示作用于所有行
  • s/:.*// 是替换规则:匹配从:开始到行尾的所有字符(.*表示任意字符任意次数),替换为空字符串
  • 如果只想处理当前选中的行,先进入可视化模式选中目标行,再执行 :'<,'>s/:.*//

2. 可视化选中+批量执行单行操作

先选中需要处理的行,再统一执行你熟悉的f:d$操作:

  1. 按 ggVG 选中全部行(也可以用v/V模式选特定行)
  2. 按 : 进入命令行,此时会自动出现 '<,'> 表示选中的范围
  3. 输入 normal f:d$ 并回车:
:'<,'>normal f:d$
  • normal 命令会让Vim在选中的每一行执行后面的普通模式操作,相当于给每行自动跑一遍f:d$

3. 宏录制+批量回放

适合需要复用操作逻辑的场景,用来批量执行单行操作:

  1. 光标定位到第一行开头
  2. 按 qa 开始录制宏(a是宏的寄存器名称,也可以用其他字母)
  3. 执行单行操作 f:d$,再按 j 跳到下一行
  4. 按 q 停止录制
  5. 按 @a 执行一次宏(处理下一行),按 @@ 重复上次宏操作;如果要处理所有剩余行,输入 999@a(数字足够大即可,Vim会自动在最后一行停止)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:05:19