如何用 vim 中的符号“&”替换?

how do I make a replacement with ampersand "&" in vim?

正如标题所说。我想用符号 (&) 替换 "tabs"。

我使用:

:%s/\t/&/g

当然这不起作用。我在 mac os x 上使用 vim(如果这有所不同)。谢谢!

您确定问题出在与号上吗?我收到了更多关于标签的投诉。不要忘记转义它。

:%s/\t/\&/g

与号的问题在于它是 regular expression metacharacter for backreferences。正则表达式替换部分的&字符表示"everything that was matched in the match-part of the expression".

因此,例如,如果您有一个包含以下行的文件:

The quick brown fox jumps over the lazy dog.

执行类似 :s/jumps/a&b/ 的 vi 命令将产生以下行:

The quick brown fox ajumpsb over the lazy dog.

您可以使用 :s/\(jumps\)/ab/ 执行相同的操作,但需要输入更多内容。

为什么 & 有用,而不仅仅是一个别名,例如</code> 在一个简单的匹配表达式中?那么,您也可以这样做:<code>:s/lazy \(dog\|cat\)/"&" is now "stupid "/:

The quick brown fox jumps over the "lazy dog" is now "stupid dog".

如果 & 不可用,表达式将变得非常难看。