VIM查找并替换为〜和\ r

时间:2018-08-22 09:51:59

标签: vim

我目前正在处理大量\ref{}的乳胶文件。使用vim,我想用\ref替换每个~\ref,但是,我找不到一个完全符合我想要的模式,f缺少了我使用的任何模式。我已经尝试过使用\\ref模式的每种魔术,但是没有任何效果。

此外,即使我尝试仅替换\re,也无法摆脱命令\r中的:%s//~\\re/g行为,我是否丢失了某些东西?

2 个答案:

答案 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