我尝试使用 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