1. 程式人生 > >奇淫巧技--vim的多行替換

奇淫巧技--vim的多行替換

場景

我想把

for a,b in zip(
	c,
	d,
	e
):
	f
	g

替換為

def func(
	para = e
)

只需要再vim中執行

s/\vfor a.*zip\(\_.{-}d,\n\s*(\_.{-})\):\_.{-}g/def func(\r\tpara=\1)/

要點

  • \_.代表包含換行的任何字元
  • \v模式下, 所有的符號都優先具有正則功能, 能大幅度減少\的出現, 但注意\_的轉移符號不能省略
  • {-}代表非貪婪模式

用途

在重構的時候, 需要將多個具有相同版面的程式碼封裝為函式, 如果不這樣做就要手動一個個改了。