Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 替换基于Vim模式中整数的模式_Regex_Vim_Replace - Fatal编程技术网

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

Regex 替换基于Vim模式中整数的模式,regex,vim,replace,Regex,Vim,Replace,我正在尝试将一堆.textile文件转换为它们等效的.markdown文件 我想要一个vim搜索/替换命令来替换所有h1.,h2.,h3.等带有相关编号的字符的模式。所以,h1.会变成,h2.会变成等等 我想我想要使用的是\=repeat命令,但是我有点不知道应该传递什么参数 这是我到目前为止所拥有的。它会替换正确的匹配项,但只会删除它们,并给出错误: :1,$s/h\d./\=repeat('#',submatch(0)) 传递给\=repeat命令的正确参数是什么?这一行可能会帮助您: %

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

我想要一个vim搜索/替换命令来替换所有
h1.
h2.
h3.
等带有相关编号的
字符的模式。所以,
h1.
会变成
h2.
会变成
等等

我想我想要使用的是
\=repeat
命令,但是我有点不知道应该传递什么参数

这是我到目前为止所拥有的。它会替换正确的匹配项,但只会删除它们,并给出错误:

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

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

这一行可能会帮助您:

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

您使用了
submatch(0)
,它是完整的匹配字符串:
h和number以及任何字符(这里您遇到了另一个问题,您应该逃出句点)
,因此它不会达到您期望的效果。

谢谢!成功了!因为句点匹配任何东西,它也匹配句点,所以我实际上不必逃避它(尽管我想我应该确保我没有得到非句点…)。快速提问:
\v
做什么?这似乎是它工作的原因,但我以前从未使用过它。@TopherFangio,
\v
意味着在它之后的模式中,所有ASCII字符(不包括字母数字字符和
\u
)都有特殊的含义(vim称之为“非常神奇”–一定喜欢它)。这意味着,您不需要使用
\(
)来转义参数,只需键入它们即可。有关详细信息,请尝试
:h/\v
和更一般的
:h magic