如何在vim中重复替换任意次数?

时间:2015-06-16 14:38:54

标签: regex vim

举例来说,我真的希望以下vim替换命令能够用一个膨胀的foop中的一个选项卡替换四个前导空格中的每一个的多个

:%s/\v^(\t*) {4}/\1\t/g

但我仍然需要反复敲击@:直到我得到"模式未找到"。是否有一种优雅的方式来指定"重复直到找不到模式"在替换命令?注意:我 NOT 正在寻找一个涉及使用retab的答案 - 我想要一个非特定于该模式的通用解决方案(并且最好不涉及编写任何类型的脚本) - 我可以使用肌肉记忆来解决问题。

2 个答案:

答案 0 :(得分:2)

您已使用^替换了替换。由于Vim如何进行替换,它会在最后一场比赛结束时寻找下一场比赛。改为使用后视:

:%s/\v(^\s*)@<= {4}/\t/g

如需更多帮助,请参阅:

:h /\@<=

答案 1 :(得分:2)

虽然不一定优雅,但可以在 @ 之前加上 count 。例如:

1 0 0 0 @