vim - 在模式前插入 n 个字符

标签 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 ?

最佳答案

\= , 一个字符串是期望的。和 LABEL不是有效的字符串

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

顺便说一句,感谢 \ze ,您无需重复搜索的内容。
%s/\zeLABEL/\=repeat(' ',20)/g

请注意,如果您需要对齐各种东西,您可以使用 printf()反而
%s#label1\|other label#\=printf('%20s', submatch(0))#

关于vim - 在模式前插入 n 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51249287/

相关文章:

git - 仅在选项卡中获取 git diff 输出

macos - 如何在不使用第三方程序的情况下重新映射 OSX 键盘?

haskell - Vim:在与光标相同的列中开始插入新行

vim - 获取光标下的整个字符串文字

vim - 在 mingW32 windows 上的 vim 中设置制表符大小

ruby-on-rails - erb模板中的macvim html5语法高亮显示

git - 如何保存更改并退出 Vim?

vim - 在vim中,如何删除一个单词?

vim - 如何在 Vim 脚本中执行外部命令?

vim - 如何在 linuxmint 上为 vim74 安装 nerdtree 插件