假设我在 shell (bash) 脚本中有一些语句,例如
var=`cat file.txt`
echo "Date is: `date`"
我想将反引号符号转换为$()
如下符号:
var=$(cat file.txt)
echo "Date is: $(date)"
我如何在 Vim 中通过搜索/替换来对整个文件执行此操作?
答案1
你可以试试
:% s/`\([^`]*\)`/$(\1)/gc
g
使其全局化(对于行中的所有条目),c
使vim
询问用户每次替换。
但它不适用于嵌套反引号和多行代码。仅适用于成对的反引号。
您还可以退出vim
并用于sed
此目的:
sed -n -i.backup 'N; ${s/`\([^`]*\)`/$(\1)/g; p; q}; b' filename
它将与多行 backtrics 一起使用,但没有嵌套。