Vim 搜索和替换:更改字符位置

Mar*_*ius 0 vim replace

我有像(i,1)and这样的字符串(i,2)我的文本中

我想要搜索并替换它们,这样我就分别得到 (1,i)(2,i)。我该如何在 Vim 中做到这一点?

Ren*_*ger 5

:%s/(\([^,]\+\),\([^)]\+\))/(\2,\1)/g
Run Code Online (Sandbox Code Playgroud)

解释:

  • :让你进入命令模式
  • %将以下命令应用于每一行
  • s该命令是替代的。它由两部分组成,图案替换。这些是分开的/
  • /模式的分隔符。模式是(\([^,]\+\),\([^)]\))
    • (您想要匹配左括号
    • \(将以下匹配部分存储在\1.
    • [^,]匹配任何内容,除了 ,
    • \+匹配至少一个(非,
    • \)结束匹配部分\1
    • ,匹配逗号(不存储在任何地方)
    • \(与上面相同,但存储在\2
    • [^)]匹配任何内容,除了 )
    • \+匹配至少一个(非)
    • \)如上
    • )匹配右括号(不存储在任何地方)
  • /用于更换的分离器。替代品是(\2,\1)
    • (字面插入(
    • \2插入模式的第二个匹配项
    • ,插入文字,
    • \1插入第一个匹配的模式
    • )插入文字)
  • /表示替换结束的分隔符结束的分隔符。
  • g 以便在一行上多次替换模式(仅当一行包含(bbb,ccc)多次时才需要)