我在 cmake 编译时遇到问题,其中有数千个/root/repo/
& 我想用 替换/repo/
。因为/
在源代码中命令
:%s/srcWrd/dstwrd/gc
无法正常工作。请在此处指导如何继续。
示例输入:文件中的一行包含
/root/repo/my-gerrit/myData.cpp
它应该看起来像
/repo/my-gerrit/myData.cpp
我已经尝试在文件中使用以下命令,但它没有按预期工作。
:%s\/root\/\repo\/repo/gc
答案1
在你给出的例子中,文件包含
/root/repo/my-gerrit/myData.cpp
这可以改为
/repo/my-gerrit/myData.cpp
使用命令:%s/\root//gc
。
您尝试了%s\/root\/\repo\/repo/gc
,它缺少正常的正斜杠。要替换/root/repo/
,/repo/
命令将是%s/\/root\/repo\//\/repo\//gc
请注意,要替换的正斜杠用 转义\
。作为命令一部分的正斜杠是不是逃走了。
答案2
虽然使用反斜杠转义正斜杠是一种选择,但使用完全不同的分隔符要容易得多。
例如:
:%s#/root/repo/#/repo/#gc
或者:
:%s+/root/repo/+/repo/+gc
或者:
:%s,/root/repo/,/repo/,gc
您可以使用几乎任何符号作为命令中的分隔符:s
,因此应该很容易找到不需要在模式或替换中转义该符号的符号。
也可以看看:help E146