我正在尝试在后面的文本中将\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
答案 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中使用正则表达式。