ターミナルとVim

ターミナルとVim

ターミナルを開き、Vimを開きます。その後、ソースコードを操作しましたが、残念ながら端末のタイトルバーの[閉じる]ボタンをクリックして作業内容を失いました。作業内容を保存せずに端末を閉じようとしたときに通知するようにVimを設定できますか?

ありがとうございます!

答え1

親プロセス(ターミナル)が終了したかどうかを事前に知る方法がないため、vim通常は親プロセスも終了することで終了します。

ただし、ほとんどのデフォルト設定では、現在編集中のファイルの名前が付けられたファイルがvim作成されます。このファイルには、プロセスが終了する前にファイルのスナップショットが含まれている必要があります。これらのファイルを別のディレクトリに配置するように特別に設定しない限り、そのファイルは編集したファイルと同じディレクトリに配置する必要があり、簡単に編集を再開できます。.swpMyPrecious.java.swpMyPrecious.javavimvim.swp

これらのファイルのいくつかはドットで始まるため、.ディレクトリ内のファイルを一覧表示するために使用しない限り、表示されません。ls -a

答え2

別の観点から問題を確認するscreenか、tmuxシェルが端末から独立して実行されるようにしてください。端末を閉じると、新しい端末を開いて元のシェルに再接続できます。 Vimは引き続き実行されます。

答え3

vim端末のGUIがこれを処理する方法を制御することはできませんWM_DELETE_WINDOW。代わりに、子シェルがあるときに端末を閉じるように求められたときに端末がどのように機能するかを制御する設定を端末で見つけます。

答え4

他の人が言ったように、vimはそのようなイベントに反応することはできません。ただし、次のいずれかの回避策を検討してください。

  • gvim代わりに、vimコマンドラインから呼び出すことができるを使用してください。エイリアスはスイッチを調整するのに役立ちます(bashが互換性のあるシェルであると仮定)alias vim=gvim。 gvimを好みのエディタとして指定することも役に立ちますexport EDITOR=gvim。ただし、これはローカルコンピュータでのみ機能します。
  • ターミナルマルチプレクサ(例えば、tmuxまたは)の使用はすでに述べられています。screen
  • 端末を閉じるかどうかを確認するように端末(どちらか)を構成します。これは最初の数回はあなたを驚かせ、長期的には端末を閉じる前に考えさせます。

関連情報