たまにコマンドラインでミスを犯し、サブシェルでvimを使用します。
もちろん、これはそのターミナルウィンドウをロックし、主なエラーを含む多数のエラーを出力します
Vim: Warning: Output not to a terminal
これが発生すると自動的に停止し、端末がハングしないようにvimを設定する方法はありますか?
私はおそらくこのvimインスタンスのプロセスIDを見つけてそれを殺すことができることを知っていますが、異なるtmuxペイン/ウィンドウで多くの異なるvimインスタンスを実行する傾向があるため、可能であればより良い解決策が欲しいです。ありがとう!
そもそも最初から簡単に起動しないようにすることができます。次の関数定義を.bashrc
に入れることを検討してください。
vim() {
[ -t 1 ] || { echo "Not starting vim without stdout to TTY!" >&2; return 1; }
command vim "$@"
}
command
ビルトインは、関数を再度呼び出すだけでなく、外部コマンドを確実に呼び出すことにより、再帰を防ぎます。
同様に、スクリプト$HOME/bin/vim
を作成できます。
#!/bin/sh
if [ -t 1 ]; then
exec /usr/bin/vim "$@"
else
echo "Not starting vim without stdout to TTY!" >&2
exit 1
fi
... $HOME/bin
を最初にPATH
に置き、Shim関数に依存せずにそのシムに作業を行わせます。
これを行う構成オプションはありませんが、:q<Enter>
、vimを終了します。
また、Ctrl-Cは機能しませんが、Ctrl-Zはvimをバックグラウンドに配置し、kill %1
。
またはvimショートカットZQ
大文字。通常モードで使用できます:-)