web-dev-qa-db-ja.com

既存のvimプロセスを再開できますか?

昨日仕事を辞めたとき、私は自分が取り組んでいたファイルでvimを開いたままにしました。今日は自宅で仕事をしているので、VPNを使用しました。同じファイルを編集しようとすると、それらのファイルで開いている別の現在のvimセッションがあるという警告が表示されます。

他のユーザーを強制的にログアウトすることもできますが、それでは既存のvimセッションが強制終了されます。 I think私の変更はすべて.swpファイルに保存されます。

代わりに、既存のvimセッションを取得して、2回目のログインで開くことはできますか?そうすれば、すべての変更が確実に保持され、同じタブをすべて再度開く必要がなくなります。

5
Cory Klein

Vimを強制終了でき(ただし-9は使用しないでください)、すべての変更は.swpファイルに保存されます。次に、新しいvimを起動し、Recoverを使用します。

7
Zan Lynx

代わりにscreenまたはtmuxを使用するのはどうですか?そうすれば、完了したら画面セッションを切断し、後で(おそらく別のマシンから)ログインして再接続できます。

3
Peter Rincker

他のvimプロセスを強制的にログアウト/強制終了すると、残された「.swp」ファイルを取得して作業を開始できるのは正しいことです。この理論をテストしたところ、とにかくUbuntuで動作しました。スワップファイルがすでに存在することが示されている場合は、必ず[回復]オプションを選択してください。

保存されていない変更はすべて取得されるはずですが、コマンド履歴などの他のセッション情報についてはよくわかりません。

1
Brian McFarland

reptyr:既存の実行中のプログラムを取得して新しい端末に接続するためのユーティリティ

manページから: "reptyrは、既存の実行中のプログラムを取得して新しい端末にアタッチするためのユーティリティです。sshを介して長時間実行プロセスを開始しましたが、そのままにしておく必要があります。中断したくないですか?画面を開始し、reptyrを使用してそれを取得してから、sshセッションを強制終了して、家に帰ります。」

0
faham

rettyと呼ばれるこの小さなプログラムがありますが、それがどれほど信頼できるかはまったくわかりません。

0
Šimon Tóth

別の端末から開始されたプロセスを引き継ぐことはできません。画面内でvimを起動した場合は、画面セッションを切り離してから、別の端末(ssh経由の外部端末を含む)から再接続することができます。

次にrettyがありますが、すべてのハードウェアプラットフォームで利用できるわけではなく、実験段階にあります。基本的には、自己責任で使用してください。

もう1つのオプションは、時々:mks(セッションを作成)を実行することです。その後、vimを強制終了して別のターミナルから起動する場合は、mksコマンドが作成したSession.vimファイルをソースして(またはvimをvim -S Session.vimで起動)、セッションを再開できます(必要な場合があります)。ただし、いくつかの復元プロンプトに応答します)。

0
tdammers