在 VIM 中每个单词的中间放置一个字符

在 VIM 中每个单词的中间放置一个字符

我有一个包含多行的文件,看起来像

RUS.LEN.8 "0612" "1212" "0605" "0606" "0000" "2121" "0401" "1211" "0000" "0707" "0000" "0000" "1111" "0303" "0303" "0102" "0133" "0602" "0000" "0404" "1212" "1111" "0000" "0101" "0000" "0909" "0103" "1010" "1515" "0000"

我想使用 VIM 在每 4 个数字块的中间放置一个 / 。知道怎么做吗?

答案1

变成,061206/12捕获分别将第一个和最后两个数字分开,然后在替换中将它们重新组合,并/在中间添加一个。使用:substitute'sg标志,这将应用于全部一行的匹配。有了:%范围,该命令将应用于每一个缓冲区中的行。

:%substitute#\(\d\d\)\(\d\d\)#\1/\2#g

笔记

  • 默认分隔符是/,在替换中也按字面意思使用。人们可以逃避该 ( \/),但更易读的技巧是使用不同的分隔符(此处:#)。
  • 每个捕获组( \(...\)) 在替换中通过其编号来引用:\1\2依此类推。看:help s/\1
  • 您将在 下找到更多详细信息(有关正则表达式和语法):help :s

答案2

对于这样的替换,您可以使用

:%s/"[0-9]{2}/&//g 在此输入图像描述

相关内容