在进行替换之前,我通常会先输入 / foo 来搜索模式。
Vim自动突出显示符合模式的所有字符串
然后我弄清楚如何编写替换命令:%s/foo/bar/g
当模式很复杂时,编写替换命令要比搜索命令困难得多
如果我只能在突出显示的字符串上进行替换。它变得容易。
问题:Translate Part of a Line
我可以找出搜索模式: /\[\[\(http\)\@!.\{-}\]\]
但我无法轻易找出替换命令。
答案 0 :(得分:6)
如果在替换命令中使用空字符串作为搜索模式,则可以替换先前搜索的模式:
在正常模式下/foo
输入:%s//bar/g
后,将“foo”替换为“bar”。
答案 1 :(得分:0)
您可以使用'c'标志告诉Vim在更换前确认。它突出显示并停止在它找到给定模式的每个匹配之前询问。
:%s/foo/bar/gc
答案 2 :(得分:0)
我刚想通了:
:%s@@\=substitute(submatch(0), '_', '/', '')@g
但还有更好的方法吗?