在模式前插入n个字符

时间:2018-07-09 15:39:18

标签: vim

我有一个文本文件,我想在字符串'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

1 个答案:

答案 0 :(得分:4)

\=之后,需要一个字符串。而且LABEL不是有效的字符串

%s/LABEL/\=repeat(' ',20).'LABEL'/g

顺便说一句,感谢\ze,您无需重复搜索的内容。

%s/\zeLABEL/\=repeat(' ',20)/g

请注意,如果需要对齐各种内容,可以改用printf()

%s#label1\|other label#\=printf('%20s', submatch(0))#