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

use*_*923 -3 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"
Run Code Online (Sandbox Code Playgroud)

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

Ing*_*kat 5

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

:%substitute#\(\d\d\)\(\d\d\)#\1/\2#g
Run Code Online (Sandbox Code Playgroud)

笔记

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