替换基于Vim中模式中整数的模式

时间:2013-07-24 15:36:38

标签: regex vim replace

我正在尝试将一堆.textile个文件转换为等效的.markdown个文件。

我想要一个vim搜索/替换命令来替换所有h1.h2.h3.等模式以及相关数量的#个字符。因此,h1.将成为#h2.将成为##,依此类推。

我认为我想要使用的是\=repeat命令,但是对于传递它的参数我有点迷失。

这是我到目前为止所拥有的。它取代了正确的匹配,但它只删除它们并给我错误:

:1,$s/h\d./\=repeat('#',submatch(0))

传递给\=repeat命令的正确参数是什么?

1 个答案:

答案 0 :(得分:2)

这一行可以帮到你:

%s/\vh(\d)\./\=repeat('#',submatch(1))

您使用了submatch(0),它是整个匹配的字符串:h and number and any char (here you had another problem, you should escape the period ),因此它不会达到您的预期效果。