Vi:"$s/$/done/"是"不是编辑器命令"?

  • 本文关键字:编辑器 命令 done Vi vim vi
  • 更新时间 :
  • 英文 :


我正在bash:中编写一个无限循环

while :
do
(whatever)
done

然而,当我尝试以这种方式插入"完成"行时,

vi -c "$s/$/rdoner/g" -c "w!" -c "q!"

我得到的是"$s/$/\rdone\r/g"不是一个编辑器命令。然而,当我在gvim时,这很好用。

有人知道为什么会发生这种事吗?我做错什么了吗?

只需将双引号替换为单引号:

vim yourfile -c '$s/$/rdoner' -c 'wq!'

bash首先解析双引号,尤其是$符号的问题。

vi是一种古老的工具。我没有它的副本,所以我不能在vi中测试你的命令,但如果我使用vim,你的命令对我来说很好。试着这样做:

vim file -c "$s/$/rdoner/g" -c "w!" -c "q!"

此外,作为旁注,wq命令可以组合用于

vim file -c "$s/$/rdoner/g" -c "wq!"

并且全局标志(/g)是不需要的,因为CCD_。

vim file -c "$s/$/rdoner" -c "wq!"

这应该更有效一点。

最新更新