如何使用&符号替换“&”在vim?

时间:2015-08-06 18:11:51

标签: vim vi

正如标题所说。我想用&符号(&)代替“标签”。

我用:

:%s/\t/&/g

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

2 个答案:

答案 0 :(得分:8)

你确定它是&符号的问题吗?我对该标签有更多的抱怨。不要忘记逃避它。

class SuperDad { XXX: SuperDad(); // = delete? }; class Child : YYY SuperDad { public: Child(int a) {...} };

答案 1 :(得分:0)

&符号的问题在于它是regular expression metacharacter for backreferences。正则表达式的替换部分中的&字符表示“在表达式的匹配部分中匹配的所有内容”。

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

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\)/a\1b/执行相同的操作,但这样可以输入更多内容。

为什么&有用的,不仅仅是例如别名\1在简单的匹配表达式中?好吧,你也可以这样做::s/lazy \(dog\|cat\)/"&" is now "stupid \1"/

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

如果&不可用,表达式会非常难看。