Vim: преобразовать обратные к нотации $ () в сценарии оболочки

Предположим, что у меня есть некоторые инструкции в скрипте shell (bash), например

var=`cat file.txt` echo "Date is: `date`" 

Я хочу преобразовать обратную обратную запись в нотацию $() например:

  • Как я могу улучшить вывод find и grep?
  • Файл больше не доступен при попытке редактировать в vim через <()
  • Присоединить (большие) файлы по алфавитно-цифровому шаблону
  • преобразовать таблицу в файл ini с помощью массивов bash
  • Можно ли использовать grep lookaroud несколько раз?
  • Курсор в соответствие, редактирование, курсор на следующее совпадение, редактирование - как в каталоге?
  •  var=$(cat file.txt) echo "Date is: $(date)" 

    Как я могу сделать это в Vim с помощью поиска / замены для всего файла?

    Мотивация: https://github.com/koalaman/shellcheck/wiki/SC2006

  • Как найти конкретную строку и распечатать всю строку?
  • Как переписать строки текста в vi / vim?
  • Откройте файл, полученный в результате команды в vim
  • vim разбирает мой отступ
  • Метод командной строки для поиска повторяющихся опечаток с номерами строк
  • vi создание файлов подкачки перед созданием нового файла
  • One Solution collect form web for “Vim: преобразовать обратные к нотации $ () в сценарии оболочки”

    Можешь попробовать

     :% s/`\([^`]*\)`/$(\1)/gc 

    g делает его глобальным (для всех записей в строке), c позволяет vim запрашивать пользователя о каждой замене.

    Но он не будет работать с вложенными backticks и многострочным кодом. Только для пар обратных линий в очереди.

    Вы также можете выйти из vim и использовать sed для этого:

     sed -n -i.backup 'N; ${s/`\([^`]*\)`/$(\1)/g; p; q}; b' filename 

    Он будет работать с многострочными backtrics, но без вложенных.

    Linux и Unix - лучшая ОС в мире.