使用正则表达式 Vim 将特定位置的字符替换为另一个字符



仍然是一个正则表达式新手,但我仍在学习。我想做的是使用 Vim 和正则表达式在这里用粗体替换数字"1"。但问题是,它不仅必须为这条线这样做,而且必须为这个位置上的每一行这样做。换句话说,这个"1"恰好在我的平面文件的第 29 个空间中。我想将其更改为"2"。谁能帮我一把? 提前谢谢你。

2017033112xxxx

%s/%29c[0-9]/2/g

它将在第 29 列中找到任何数字(从 0 到 9),并将其替换为 2。

%s/^(.{28})1/12/

这将保留每行的前 28 个字符,并将第 29 位的"1"替换为"2">

使用比赛开始zs将第 29 位的1更改为2

%s/^.{28}zs1/2

以前

123456789012345678901234567890123
2017033112xxxxxxxxx19420525212007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525212005

123456789012345678901234567890123
2017033112xxxxxxxxx19420525222007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525222005

最新更新