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

Vim中如何编写正则表达式识别仅包含单行内容的独立段落

Vim匹配单独成段的row 1正则方案

原命令错误原因

你之前使用的v/(\n\n)+/d不符合需求,核心问题有两个:

  • 逻辑反向::v/{pattern}/d的作用是保留匹配到pattern的行,删除未匹配的行,你的pattern匹配的是连续换行符,目标行row 1本身不包含连续换行,会被直接删除
  • 正则语法不符合Vim默认规则:Vim默认magic模式下,括号分组需要转义为\(\),未转义的()只会被识别为普通字符

正确实现方案

方案1:直接筛选保留目标行

执行以下命令可以直接删除所有非目标内容,仅保留单独成段的row 1:

:g/\v(^|\n\n)row 1(\n\n|$)/!d

正则各部分说明:

  • \v:开启Vim的very magic模式,所有元字符无需额外转义,降低书写复杂度
  • (^|\n\n):匹配文件起始位置,或者连续两个换行(代表前侧是独立空行)
  • row 1:匹配目标内容
  • (\n\n|$):匹配连续两个换行(代表后侧是独立空行),或者文件结束位置
  • !d:删除所有未匹配到上述模式的行

方案2:仅高亮匹配目标内容

如果你只需要高亮定位目标行,不需要修改文本,使用以下正则即可:

/\v(^|\n\n)\zsrow 1\ze(\n\n|$)

其中\zs和\ze分别标记匹配结果的起始和结束位置,确保高亮内容仅包含row 1本身,不会带上前后的空行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:03