搜索括号并在 gvim 中添加 \

search for brackets and add \ to it in gvim

我是 Vim 的新手。请帮助搜索并在字符串中添加\

例如,对于[1][sometest & numbers][7],输出应该是 [1]\[sometest & numbers\][7].

我可以用这个

更改左括号 [
:%s/\[[a-z]\&\[/\\[/g

但无法做到 ](右括号)。

这里的基本思想是将字符串分成几部分:

[1][sometest & numbers][7]

可拆分为:

  1. [1]
  2. [
  3. sometest & numbers
  4. ]
  5. [7]

然后用第 1 部分 + \[ + 第 3 部分 + \] + 第 5 部分重新构建你的字符串。

这可以通过捕获组来完成。看看 :h \(。 这应该为您指明正确的方向。玩得开心!

要匹配不属于 [<DIGITS_HERE>] 子字符串的任何 ][,您可以使用

:%s/\v\[(\d+])@!|(\[\d+)@<!]/\&/g

这里,

  • \v - 在非常神奇的模式下运行
  • \[(\d+])@! - [ 字符后面没有 1+ 个数字,然后是 ]
  • | - 或
  • (\[\d+)@<!] - ] 字符前面没有紧跟 [ 和 1+ 位数字
  • /\& - 将匹配项替换为 \ 并找到匹配项
  • /g - 全球。