我想使用 VIM 编辑器命令一次替换多个字符串

我想使用 VIM 编辑器命令一次替换多个字符串
104116001|PRODUCT|511|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
104116001|PRODUCT|512|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
104116001|PRODUCT|514|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
104116001|PRODUCT|515|RAMP||2016-03-18|2016-03-23|060.00|1||R|012

在上面,我想用相同的方式替换所有|511|- -而 这里最主要的是我不想替换- (我希望它们是相同的)。|211||512||212| |514||214|515215

我使用了你提到的命令:

:map <leader>fq :%s/a/b/ge <Bar> %s/c/d/ge <Bar> %s/e/f/ge<CR>  

但这对我的情况不起作用,非常感谢任何帮助!

答案1

您需要的是一个以 51 开头的正则表达式,其第三个字符可以是 1、2 或 4 中的任意一个。然后,您要以这种方式替换与正则表达式匹配的字符串:前两个字符为 21,第三个字符应为与正则表达式指定的第 3 个字符匹配的任何字符(即:无变化)。

%s/51\([124]\)/21\1/g

这里 [124] 表示 1、2 或 4 中的任意一个,而 \([124]\) 表示“让我们记住与 [124] 匹配的字符”。在替换字符串中,\1 表示“我们记住的第一个子字符串”(更具体地说:与第一个 \(\) 对之间的正则表达式部分匹配的子字符串)。

相关内容