在vim中搜索并替换选定的文件路径

时间:2014-07-23 15:17:55

标签: vim replace

我经常使用里面装满文件路径的文件。我希望能够在Visual Mode中快速选择我的文件路径,并将其替换为其他文件路径。

例如我有这样的文件:

balvadsd /mnt/Windows/Documents\ and\ Settings/stuff/file.exe blablabalba albla
/mnt/Windows/Documents\ and\ Settings/stuff/file.exe bla2 vslva 21 
stuff foo bar dsad /mnt/Windows/Documents\ and\ Settings/stuff/file.exe 

我需要

  1. 搜索所有/mnt/Windows/Documents\ and\ Settings/stuff/file.exe
  2. 用其他路径替换我的路径/mnt/Windows/Documents\ and\ Settings/stuff/file.exe。棘手的是,像this one这样的解决方案由于斜杠,反斜杠和点而无法处理文件路径。

2 个答案:

答案 0 :(得分:2)

您可以使用\转义正则表达式元字符。因此,foo/bar为您的正则表达式foo\/bar。或者您可以使用其他分隔符,例如#。但是你仍然需要逃避.。您可以通过使用.非常无意义来避免转义\V和其他正则表达式元字符的需要。使用\V表示现在必须转义所有正则表达式元字符,这意味着非转义章程与其文字自我匹配。

:%s#\V/mnt/Windows/Documents\ and\ Settings/stuff/file.exe#replacement#g

然而,所有逃脱都会变得烦人。我通常使用视觉星图和/或plugin。意思是我在视觉上选择文本,然后按*。然后,您可以:%s//replacement/:%s##replacement#进行替换。

Neil Drew有一些不错的Vimcast剧集谈论这个:

您可以使用gn动作和.命令进一步理解这个想法。请参阅以下vimcast剧集:Operating on search matches using gn

如需更多帮助,请参阅:

:h /\V
:h gn

答案 1 :(得分:0)

您可以使用任何其他单字节字符,而不是 字母数字字符,而不是在替换命令的正文中使用斜杠,' \& #39;,'"'或者' |'。 (在本例中为@)。

%s@/mnt/Windows/Documents\\@/some/other/path