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

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

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

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

 var=$(cat file.txt) echo "Date is: $(date)" 

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

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

  • Вывод сценария раскраски с помощью cat
  • Сделать vimdiff отображать разные строки как разные строки (не отчасти разные)
  • Как проверить, какая версия редактора VI у меня есть?
  • Файл открывается автоматически в вкладках
  • Использует ли ctrl + c вместо esc для выхода из режима вставки, что-нибудь в vi?
  • Извлечение полей в файл и сохранение его в другом файле в vim
  • Как выбрать полный файл в vi, который будет вставлен в gedit?
  • Solaris 11 и vim F вместо конца
  • 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 - лучшая ОС в мире.