我经常使用里面装满文件路径的文件。我希望能够在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
我需要
/mnt/Windows/Documents\ and\ Settings/stuff/file.exe
/mnt/Windows/Documents\ and\ Settings/stuff/file.exe
。棘手的是,像this one这样的解决方案由于斜杠,反斜杠和点而无法处理文件路径。 答案 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