Замените исходное слово на содержащее / (прямую косую черту) на целевое слово в окне команд редактора VI

Я сталкиваюсь с проблемой при компиляции 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
3
задан 28 June 2019 в 15:52

2 ответа

В приведенном вами примере с файлом, содержащим

/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
ответ дан 28 June 2019 в 15:52

В то время как выход из наклонных черт вправо с обратными косыми чертами является опцией, намного легче использовать другой разделитель в целом.

Такой как:

:%s#/root/repo/#/repo/#gc

Или:

:%s+/root/repo/+/repo/+gc

Или:

:%s,/root/repo/,/repo/,gc

Можно использовать почти любой символ в качестве разделителя на :s команда, таким образом, должно быть легко найти то, которое не требует выхода что символ в шаблоне или замене.

См. также :help E146

1
ответ дан 1 December 2019 в 16:16

Другие вопросы по тегам:

Похожие вопросы: