完整来源:http://www.vim.org/scripts/download_script.php?src_id=10391
该行是:
silent %s/[^λ←→≲≳≡≠⇒»∙∀\\\-!#$%&*+/<=>?@\^|~.]\@<=\\\([^λ←→≲≳≡≠⇒»∙∀\\\-!#$%&*+/<=>\?@\^|~.]\)/λ\1/eg
有人请为我解读这个。较大的脚本旨在将Haskell中的一些运算符unicode-ify更熟悉的数学等价物。
答案 0 :(得分:6)
作为该行的作者,我可以翻译。复杂的正则表达式通常是“只写”,这依赖于vim正则表达式扩展。
这样做的目的是确保它不会在\
之类的运算符中间用漂亮的λ
替换\\
。
它会检查以确保缓冲区中我们前面的字符不是有效的运算符符号(所有内容的含义都是\@<=
)。 \@<=
是一个'零宽度匹配后面',只有当它左边的东西出现时才会成功,但不会在结果匹配中包含它。
然后\([^...]\)
部分检查以确保跟随我们的东西也是非符号,在这种情况下,我们匹配它,然后将其包含在输出中归功于{{ 1}}在结果中。
注意,这并不完美。不幸的是,它仍然会替换字符串中的反斜杠,但效果相当不错。
答案 1 :(得分:3)