1

の線に沿って何かを実行したい

vim -r -c "w %.new | q!" ${filename}

しかし !外部コマンドのプレフィックスとして解析されます。単一引用符を使用すると、同様の問題が発生します。

次のコードでこれを回避できますが、前のコードよりもすっきりしていないか、わかりにくいと感じます。

cp ${filename} ${filename}.new && mv .${filename}.swp .${filename}.new.swp;
vim -r -c "wq" ${filename}.new;
4

1 に答える 1

1

二重引用符の代わりに一重引用符を使用してください。は!vimではなくbashで解釈されています。

vim -r -c 'w %.new | q!' ${filename}

!続いて test は、そのテキストで始まる最後のコマンドを実行します。"この場合、bash は、見つからないコマンドで始まるコマンドを探します。一重引用符は、bash による解釈を停止します。!

!bashでの使用

実際の問題は%.new存在していたようです。w!代わりに上書き使用を強制するにはw

vim -r -c 'w! %.new | q!' ${filename}
于 2013-08-18T00:54:56.870 に答える