Regular-Expression

在 Vim 中的其他兩個字元之間插入一個字元

  • December 14, 2020

如果我用正則表達式在 vim 中搜尋模式,然後想插入一些東西而不改變正則表達式匹配的內容,我該怎麼辦?例如,在一個文件中

foo123
bar4567

12zw231xy

我想在每個非數字後跟一個數字之間插入一個換行符,從而生成如下文件:

foo
123
bar
4567

12zw
231xy
:%s/\(\D\)\(\d\)/\1\r\2/g
  • \(\)是擷取組。其中捕捉到的內容由\1和複製\2
  • \D是非數字,\d是數字。
  • \r成為 Vim 中的換行符。

這通過魔術模式正則表達式得到簡化,啟用\v

:%s/\v(\D)(\d)/\1\r\2/g

引用自:https://unix.stackexchange.com/questions/624470