崇高なテキストからのホット終了機能を実装するvimプラグインはありますか


11

Hot exitは、Sublime Textエディターのキラー機能の1つです。開いているファイルの変更を気にすることなく、いつでもエディターを閉じることができます。問題なく閉じるだけです。もう一度STを起動すると、開いて編集したすべてのファイルは、閉じる前と同じ状態になります

vimで同じことをする方法はありますか?


:xa exit all(すべての変更を保存してVimを閉じる)
Sim

これによりファイルが書き込まれますが、他には何も保存されません。OPは、ファイルを書き込まずに保存することと、開いているタブまたはバッファーの状態を保存することの両方を必要としていると思います
EvergreenTree

はい、私は後で彼のコメントからそれを理解しました。
Sim

回答:


6

Vimはこれを行うことができますが、少し不格好でいくつかの設定が必要になる場合があります。

romainlは、途中であなたを取得しますsession。不足しているビットは、スワップファイル、、:preserveおよびの&フラグですcpoptions

スワップファイルは、Vimまたはシステムがクラッシュした場合の回復を目的としています。保存されていない変更を復元できます(いくつかの制限があります:he swap-file。を参照)。ただし、Vimが正常に終了すると、バッファーに変更が保存されていなくても、使用していたすべてのスワップファイルが削除されます。

ここが:preserveand cpoptions&出番です:preserve。Vimはすべてのバッファをスワップファイルにすぐに書き込むように強制します(4秒後や200文字後の標準、またはオプションで設定されているものとは異なります)。こうすることで:set cpoptions+=&、Vimが正常に終了したときに保存されたスワップファイルを削除しないように指示し:preserveます。

残念ながら、Vimはスワップファイルからの回復時にスワップファイルを自動的にクリーンアップしないため、すぐに次のようなディレクトリができます。

.foo.txt.swn
.foo.txt.swo
.foo.txt.swp
foo.txt

古い*.swpファイルは手動で削除できますが、Vimは新しいスワップファイルを配置するファイルがある場合にのみ、自動的に回復を提案します。この:recoverコマンドにより、Vimは回復するスワップファイルを検索します。

自動コマンドを使用すると、保存(おそらくQuitPreイベントを使用)と回復(おそらくBufReadまたはを使用BufReadPost)を自動化できます。Recover.vimは、回復を管理するためのより使いやすい代替手段として機能するプラグインです。スワップファイルのクリーンアップも処理するようです。私はそれがファイルの.swoないディレクトリをどのように処理するのかわかりません.swp:recoverその場合はまだ使用する必要があるかもしれません。

vim-obsessionは、セッションの処理をはるかに容易にすることを主張する別のプラグインです。


1

はい。これは「セッション」と呼ばれ、次の場所ですべてについて読むことができます。

:help session

1
私はセッションについて知っています。しかし、それは同じではないようです-開いているすべてのバッファーとタブ(および設定)を保存しますが、バッファーの1つに変更がある場合は、終了する前にそれらをディスクに書き込む必要があります。崇高なテキストでは、終了時に開いているファイルを保存する必要はありません-崇高はそれへのすべての変更を別の場所に保存し、再オープン時にそれらを復元します。そのため、ディスク上の元のファイルは変更されませんが、変更も失われません
LazyS

はい、それが主な違いです。それがtmux / screen / detachに頼らずに何らかの方法で達成できるかどうかはわかりません。
romainl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.