【发布时间】:2015-08-06 18:11:51
【问题描述】:
正如标题所说。我想用 & 符号 (&) 替换,比如“制表符”。
我用:
:%s/\t/&/g
当然它不起作用。我在 mac os x 上使用 vim(如果这有所不同)。谢谢!
【问题讨论】:
-
当用
&替换&时,这特别喜剧我认为一些自动命令试图强制有效的html!
正如标题所说。我想用 & 符号 (&) 替换,比如“制表符”。
我用:
:%s/\t/&/g
当然它不起作用。我在 mac os x 上使用 vim(如果这有所不同)。谢谢!
【问题讨论】:
& 替换& 时,这特别喜剧我认为一些自动命令试图强制有效的html!
& 符号的问题在于它是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".
如果& 不可用,表达式会变得非常难看。
【讨论】:
:%s/\t/\&/g”
您确定问题出在与号上吗?我收到了更多关于标签的投诉。不要忘记逃避它。
:%s/\t/\&/g
【讨论】:
:help sub-replace-special 将显示替换中的所有特殊序列。请注意,'magic' 是默认设置的,用于那些基于该选项具有不同行为的人。
:%s/[0-9]\{3}/(&)/g