我在bash中写了一个无限循环:
while :
do
(whatever)
done
但是,当我尝试以这种方式插入“完成”行时
vi -c "$s/$/\rdone\r/g" -c "w!" -c "q!"
我得到的是“$ s / $ / \ rdone \ r / g”不是编辑器命令。但是,当我使用gvim时,这种方法很好。
有人知道为什么会这样吗?我做错了吗?
答案 0 :(得分:3)
只需用单个引号替换双引号:
vim yourfile -c '$s/$/\rdone\r' -c 'wq!'
首先用bash解析双引号,它特别是$
符号的问题。
答案 1 :(得分:0)
vi
是一个古老的工具。我没有它的副本,所以我无法在vi中测试你的命令,但如果我使用vim你的命令对我来说很好。试着这样做:
vim file -c "$s/$/\rdone\r/g" -c "w!" -c "q!"
另外,作为旁注,w
和q
命令可以合并为
vim file -c "$s/$/\rdone\r/g" -c "wq!"
并且不需要全局标记(/g
),因为$
只能在该行上匹配一次。
vim file -c "$s/$/\rdone\r" -c "wq!"
这应该更有效率。