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

时间:2017-05-03 20:11:59

标签: regex vim

仍然是正常的表达方式,但我还在学习。我想做的是更换数字' 1'这里使用Vim和正则表达式以粗体显示。但问题是它不仅要为这条线做这件事,而且对于每一条线都要做到这一点。换句话说,这个' 1' 1碰巧是在我平面文件的第29个空间。我想将其更改为' 2'。任何人都可以帮我一把吗? 提前谢谢。

2017033112xxxxxxxxx194205252的 1 2007

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

这将保留每一行的前28个字符,并用'2'替换第29个位置的'1'

答案 2 :(得分:2)

使用匹配开始 1

将第{29}位置2更改为\zs
%s/^.\{28\}\zs1/2

<强>前

123456789012345678901234567890123
2017033112xxxxxxxxx19420525212007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525212005

<强>后

123456789012345678901234567890123
2017033112xxxxxxxxx19420525222007
2017033112xxxxxxxxx19420525292006
2017033112xxxxxxxxx19420525222005