我已经尝试了一段时间,但我无法弄清楚:我的文字看起来像那样:
xxx "fy1":
xxx.xxx = fy;
xxx;
xxx "tm1":
xxx.xxx = tm;
xxx;
...
我希望它看起来像那样:
xxx "fy1":
xxx.xxx = fy1;
xxx;
...
我的问题是,我可以找到所有出现的地方,我想要放置一个" 1"与
s/[ft][ymdhi];/???/g
但是我在问号处放置的所有内容也取代了字母。我唯一想做的就是在这两个字母之后加一个数字。
我想到了
\w{2}
在搜索字符串中,但是在分号之前找到两个字母的所有内容,所以我想我需要
[ft][ymdhi]
提前致谢!
答案 0 :(得分:3)
您可以创建捕获组,以便在替换时引用匹配的文本。或者,您可以使用vim的\zs
来保留一些匹配的文本,例如
这条线完成了这项工作:
%s/[ft][ymdhi]\zs;/1;/g
:h \zs and :h \ze
了解详情
如果也将\ze
添加到此示例中,则为:
%s/[ft][ymdhi]\zs\ze;/1/g
它也有效。
答案 1 :(得分:2)
您希望将\(...\)
与\1
一起使用:
:%s/\([ft][ymdhi]\);/\11;/
转义的paranthes \(...\)
种 store 在paranthesis之间匹配的内容。以后可以使用\1
再次使用存储的文本。
在你的情况下,\11
与11只没有任何关系,只是巧合的是你用括号记住的文字后跟1
。