ファイルが変更されたときに、素早く簡単にコマンドを実行する方法が欲しいです。非常にシンプルで、ターミナル上で実行したままにしておき、そのファイルでの作業が終わったときにターミナルを閉じるようなものが欲しいです。
現在、私はこれを使っています。
while read; do ./myfile.py ; done
そして、そのファイルをエディタに保存するたびに、そのターミナルに行って、Enterを押す必要があります。私が欲しいのは、次のようなものです。
while sleep_until_file_has_changed myfile.py ; do ./myfile.py ; done
または、それと同じくらい簡単な他のソリューション。
ところで、私はVimを使用しており、BufWriteで何かを実行するオートコマンドを追加できることは知っていますが、これは私が今望んでいる解決策ではありません。
Update: できれば捨てられるようなシンプルなものが欲しいです。さらに、プログラムの出力を見たい(エラーメッセージを見たい)ので、ターミナルで実行できるものが欲しいです。
回答について:たくさんのご回答ありがとうございました。どの回答もとても素晴らしく、それぞれが他の回答とは全く異なるアプローチをとっています。私は1つだけ受け入れる必要があるので、最もエレガントではないと分かっていても、私が実際に使用したもの(シンプルで素早く、覚えやすかったもの)を受け入れます。
Vimで解決。
:au BufWritePost myfile.py :silent !./myfile.py
しかし、この解決策は、タイプするのがちょっと面倒だし、何をタイプすればいいのかを正確に覚えるのがちょっと大変だし、その効果を元に戻すのがちょっと難しい(:au! BufWritePost myfile.py
を実行する必要がある)ので、いらないです。さらに、このソリューションは、コマンドの実行が終わるまでVimをブロックします。
他の方の参考になるかもしれませんので、念のためここに追加しておきます。
プログラムの出力を表示するには、:silent
コマンドを削除します(Enterキーを押すまでの数秒間、出力がエディタ上に書き込まれるため、編集の流れを完全に断ち切ることができます)。