我是Vim的新手,请帮忙搜索并将\
添加到字符串中。
例如,对于 [1][sometest & numbers][7]
,输出应该是
[1]\[sometest & numbers\][7]
。
我可以使用以下方法来更改开放的括号[
:
:%s/\[[a-z]\&\[/\\\[/g
但是我无法为
]
(右括号)完成它。[<DIGITS_HERE>]
子字符串的 ]
或 [
,您可以使用::%s/\v\[(\d+])@!|(\[\d+)@<!]/\\&/g
在这里,
\v
- 打开非常魔法模式\[(\d+])@!
- 一个 [
字符后面不跟随1个或多个数字然后是 ]
|
- 或者(\[\d+)@<!]
- 一个 ]
字符不是紧接着前面的 [
和1个或多个数字/\\&
- 将匹配项替换为 \
和找到的匹配项/g
- 全局。[
或 ]
不是 [<DIGITS>]
子字符串的一部分。 - Wiktor Stribiżew那么这里的基本思路是将字符串分割成若干部分:
[1][sometest & numbers][7]
可以分成:
[1]
[
一些测试和数字
]
[7]
然后你可以通过将第1部分 + \[
+ 第3部分 + \]
+ 第5部分来构建你的字符串。
这可以通过捕获组来完成。看一下:h \(
。这应该会指引你走向正确的方向。玩得开心!