Заменить текст внутри кавычек в vim

У меня большой sql-файл, и я хотел бы переименовать имя таблицы из `feedback` в` comments`, но я не хочу заменять слово обратной связи, если какая-либо строка имеет этот текст, поэтому я пытался выбрать он с кавычками, но vim не может его найти. Я использую

:s/`feedback`/`comments`/

Любая идея, как это сделать? возможно, vim не лучший вариант для этого?

1
задан 7 November 2014 в 14:33

2 ответа

Попробуйте в vim:

:%s/`feedback`/`comments`/gc

это должно работать так, как вы ожидали

5
ответ дан 24 May 2018 в 02:06
  • 1
    Спасибо за ваш ответ. Это тоже поможет. Мне нужно проверить разницу между: s и:% s – SERPRO 7 November 2014 в 15:01
  • 2
    @SERPRO % заменяет весь файл. Это диапазон адресов для операции. – muru 7 November 2014 в 15:02
  • 3
    введите цитаты. как вы хотели – Ramya A 7 November 2014 в 15:06

Вот однострочный файл vi / vim (используя ex -s, чтобы не открывать редактор полного экрана, приводящий к короткой вспышке):

ex -s -c 'w %~ | %s/`feedback`/`comments`/g' -c 'x' <file>

Объяснение:

[ f3] сохраняет копию файла с суффиксом ~. Это удобно в качестве резервной копии, если вы что-то испортили. | является разделителем команд. % означает «делать это действие на каждой строке». s/`feedback`/`comments`, как вы, вероятно, уже знаете, означает «заменить текст, соответствующий регулярному выражению `feedback`, с `comments` в текущей строке». g означает «глобальный», т. е. не останавливается после первой подстановки на линии. x является сокращением для wq, то есть оно означает запись файла и выход из него. Он должен быть отдельным, потому что иначе он будет висеть, если нет совпадения.
2
ответ дан 24 May 2018 в 02:06

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

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