[vim ] 尋找匹配的括號做取代

看板Editor作者 (妄想制御)時間12年前 (2012/05/04 02:49), 編輯推噓2(209)
留言11則, 5人參與, 最新討論串1/1
如題, 例如說我想把所有的 foo(expression) 取代成 foo(expression).bar expression可能是任意的c運算式 (可以先假設不包含字串 不然太複雜了) 上網查了一下 似乎是超過vim的regex的能力範圍 請問有沒有別的解法 thanks -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 54.248.3.162

05/04 03:11, , 1F
目前想到用錄製巨集的 因為%可以跳到對應括號
05/04 03:11, 1F

05/04 03:19, , 2F
qa/foo(<enter>%i.bar<esc>q 然後@a可以讓他作一次
05/04 03:19, 2F

05/04 03:22, , 3F
<enter><esc>是按enter和esc執行到檔案結尾不知道怎麼作
05/04 03:22, 3F

05/04 08:14, , 4F
你的意思是foo(abc),foo(3+2),foo("adc")都要改成foo(x).bar?
05/04 08:14, 4F

05/04 10:08, , 5F
可以用:%s/foo(//gn 知道有幾個,比如N個 然後N@a
05/04 10:08, 5F

05/04 10:08, , 6F
巨集就是用上面f大做好的巨集
05/04 10:08, 6F

05/04 17:58, , 7F
感謝樓上三位<(_ _)>
05/04 17:58, 7F

05/04 17:59, , 8F
@kdjf: 對, 而且要處理foo((1+2)*(3+4))這種case
05/04 17:59, 8F

05/05 18:37, , 9F
:%s/foo(.*)/&\.bar/g
05/05 18:37, 9F

05/05 22:32, , 10F
樓上的作法是不是在類似 foo(1+2)*(3+4)會有問題?
05/05 22:32, 10F

05/06 00:03, , 11F
會... 那例只能用巨集了
05/06 00:03, 11F
文章代碼(AID): #1FejCyfV (Editor)