2017-08-31 32 views
0

我想在下面的文本中將\sigma \circ \tau的所有實例改寫爲\tau \circ \sigma。我曾嘗試使用如何在vim中使用替代品查找和替換句子?

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

沒有在VIM提示維基(我可能是錯誤的)這種轉變(涉及若干字)的例子。見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 

回答

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中使用正則表達式的一個很好的概述。