如何在vim中使用替换来查找和替换句子?

时间:2017-08-31 23:30:52

标签: vim

我正在尝试在后面的文本中将\sigma \circ \tau的所有实例重写为\tau \circ \sigma。我试过用

:%s/\sigma \circ \tau/\tau \circ \sigma

在vim提示wiki上没有这种转换(涉及几个单词)的例子(我可能会弄错)。请参阅this

    1 &\temp{\sigma \circ \tau} 9 \\
    9 &\temp{\sigma \circ \tau} 1 \\
    \vspace{1cm} \\
    2 &\temp{\sigma \circ \tau} 7 \\
    7 &\temp{\sigma \circ \tau} 6 \\
    6 &\temp{\sigma \circ \tau} 3 \\
    3 &\temp{\sigma \circ \tau} 2 \\
    \vspace{1cm} \\
    8 &\temp{\sigma \circ \tau} 5 \\
    5 &\temp{\sigma \circ \tau} 4 \\
    4 &\temp{\sigma \circ \tau} 8

1 个答案:

答案 0 :(得分:4)

这是因为反斜杠在vim正则表达式中具有特殊含义。例如,\s表示一个空白字符\c告诉vim搜索不区分大小写,\t搜索一个标签。

要搜索文字反斜杠字符,必须用另一个反斜杠转义它,即

:%s/\\sigma \\circ \\tau/\\tau \\circ \\sigma

如果您想缩短正则表达式,可以这样做:

:%s/\v(\\sigma) (\\circ) (\\tau)/\3 \2 \1

:%s/\v(\\sigma)( \\circ )(\\tau)/\3\2\1

代替。我还强烈建议您阅读vimregex.com,其中概述了如何在vim中使用正则表达式。