Я сталкиваюсь с проблемой при компиляции cmake, где есть тысячи /root/repo/
и amp; Я хочу заменить на /repo/
. Из-за /
в исходном слове команда
:%s/srcWrd/dstwrd/gc
не работает. Пожалуйста, руководство здесь о том, как действовать.
Пример ввода: строка в файле содержит
/root/repo/my-gerrit/myData.cpp
Это должно выглядеть как
/repo/my-gerrit/myData.cpp
Я пробовал команду ниже внутри файла, но она не работает как ожидается.
:%s\/root\/\repo\/repo/gc
В приведенном вами примере с файлом, содержащим
/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
Обратите внимание, что косые черты, которые вы хотите заменить, экранируются с помощью \
. Прямая косая черта, являющаяся частью команды, не не экранирована.
В то время как выход из наклонных черт вправо с обратными косыми чертами является опцией, намного легче использовать другой разделитель в целом.
Такой как:
:%s#/root/repo/#/repo/#gc
Или:
:%s+/root/repo/+/repo/+gc
Или:
:%s,/root/repo/,/repo/,gc
Можно использовать почти любой символ в качестве разделителя на :s
команда, таким образом, должно быть легко найти то, которое не требует выхода что символ в шаблоне или замене.
См. также :help E146