如何在vim的可视模式下查找和替换美元符号

6

我正在编辑一个作为here document使用的shell。我想用\ $替换$符号。当vim将$用作行尾时,我该如何做到这一点。

cat > goodband.txt <<EOF 

function bestband
{
  local JON=$1
  local BON=$2
}

EOF


I want  to replace with 


cat > goodband.txt <<EOF 

function bestband
{
  local JON=\$1
  local BON=\$2
}

EOF

我进入可视模式,选中了代码块并尝试使用 :s/$/\$\g 进行替换。但我不小心选中并替换了行末标记。


对于正在寻找将所有 $ 替换为 $ 的解决方案的人,您可以使用 %s/\$/\\\$/g - Rishabh Bhatnagar
2个回答

9

$是表示行末的特殊标记。如果您想替换文字中的字面上的$字符,您需要对它们进行转义,例如移动到JON行的开头并输入:

:.,.+1s/\$/\\$/g

(当前行和下一行).

如果难以确定行范围来影响可视选择,可以使用'<'>标记:

:'<,'>s/\$/\\$/g

1
这里不需要使用:global。视觉选择的正确范围是'<,'> - Ingo Karkat

0

我使用了这个 <,'>s/\$/\\\$/g



你的答案缺少初始的 ''< 表示第一行被选中。此外,在替换部分只需要 两个 反斜杠(用于转义字面上的反斜杠);$ 仅在搜索模式中具有特殊含义,而不是在替换中(但转义它也无妨)。 - Ingo Karkat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接