我目前正在处理大量\ref{}
的乳胶文件。使用vim,我想用\ref
替换每个~\ref
,但是,我找不到一个完全符合我想要的模式,f
缺少了我使用的任何模式。我已经尝试过使用\\ref
模式的每种魔术,但是没有任何效果。
此外,即使我尝试仅替换\re
,也无法摆脱命令\r
中的:%s//~\\re/g
行为,我是否丢失了某些东西?
答案 0 :(得分:6)
仅做实验,我发现同时逃避~
和\
都是可行的,所以:
the quick
brown \ref{} fox
\ref{} jumps over \ref{}
the lazy dog
具有:
:%s/\\ref/\~\\ref/g
导致:
the quick
brown ~\ref{} fox
~\ref{} jumps over ~\ref{}
the lazy dog
答案 1 :(得分:3)
问题可能来自~
,正如DaveyDaveDave在另一个答案中指出的那样,它也具有特殊含义。一个小技巧是始终在帮助中搜索/
+您的序列以查找其正则表达式的含义。像:h /~
或:h /\r
。
关于
:%s//~\\re/g
此命令是有问题的,因为它仅搜索上一个模式(搜索为空,//
),并且还会替换为您不想要的未转义的~
。
实现这一目标的更短的方法:
:%s/\\ref/\~&/g
:%s/\ze\\ref/\~/g