我有一个文本文件,我想在字符串'LABEL'之前插入20个空格。我想在Vim中这样做。
我希望像s/LABEL/ {20}LABEL/
这样的东西可以工作。没有。
这个SO问题与我想做的很接近,但是我不能在'= repeat()'之后加上'LABEL'。 Vim regex replace with n characters
%s/LABEL/\=repeat(' ',20)/g
有效。
%s/LABEL/\=repeat(' ',20)LABEL/g
给了我E15: Invalid expression: repeat(' ',20)LABEL
如何获得vim来评估=repeat()
而不是=repeat()LABEL
?
答案 0 :(得分:4)
在\=
之后,需要一个字符串。而且LABEL
不是有效的字符串
%s/LABEL/\=repeat(' ',20).'LABEL'/g
顺便说一句,感谢\ze
,您无需重复搜索的内容。
%s/\zeLABEL/\=repeat(' ',20)/g
请注意,如果需要对齐各种内容,可以改用printf()
%s#label1\|other label#\=printf('%20s', submatch(0))#