vim 正则表达式 :s/^\s*\(.\)\+/\\\1/g 仅显示最后替换的字符

vim 正则表达式 :s/^\s*\(.\)\+/\\\1/g 仅显示最后替换的字符

我需要在字符串中的每个字符前添加一个反斜杠 \,不包括任何前导空格。我相信下面的方法可以解决问题。

:s/^\s*\(.\)\+/\\\1/g

但它会产生以下结果

   abcde
\e

即,它仅显示最后一个替换,而不是每个替换。

Vim 提供了 2 个正则表达式引擎,您可以通过在搜索字符串前面添加 '\%#=1' 或 '\%#=2' 来显式访问它们。两者都会产生相同的结果。

有人可以解释一下我在这里做错了什么吗?

答案1

您的正则表达式捕获完整的输入字符串,abcde捕获“e”并将其替换为\e

你可能想要更多类似的东西::s/\S/\\&/g

相关内容