vim submatch - 尝试用引号括住字符串

vim submatch - 尝试用引号括住字符串

我尝试使用 vim submatch 命令将一行文本中的所有字符串括在引号中,但不起作用。以下是我所做的

:s:\a*\a:\(submatch(0)\):g

它所做的就是用字符串 (submatch(0)) 替换所有字符串。如何让 vim 执行我想执行的操作?

答案1

submatch 不是解决此问题的最佳解决方案。我在\\=

我发现:

                *sub-replace-special* *:s\=*
When the {string} starts with "\=" it is evaluated as an expression, see
|sub-replace-expression|.  You can use that for any special characters.
Otherwise these characters in {string} have a special meaning:

如果你坚持使用 submatch,你可以按以下方式使用它:

s:\a*\a:\='"'.submatch(0).'"'

然而更易读的解决方案是:

s:\a*\a:"\0"

答案2

您必须使用一对括号\(和将模式括起来以捕获每个匹配项\)。完成此操作后,您可以使用替换模式中的实际匹配文本\1

以下命令可以完成您想要的操作:

:s:\(\a*\a\):"\1":g

相关内容