Apakah ada plugin vim yang menerapkan fitur keluar panas dari teks luhur

11

Hot exit adalah salah satu fitur mematikan editor Sublime Text. Ini memungkinkan untuk menutup editor kapan saja tanpa khawatir tentang modifikasi pada file yang dibuka - hanya ditutup tanpa pertanyaan. Ketika meluncurkan ST lagi semua file yang dibuka dan diedit akan berada pada kondisi yang sama seperti sebelumnya

Saya bertanya-tanya apakah ada cara melakukan hal yang sama di vim?

Malas
sumber
: xa keluar semua (simpan semua perubahan dan tutup Vim)
Sim
Ini menulis file, tetapi tidak menyimpan yang lain. Saya pikir OP menginginkan sesuatu yang keduanya menyimpan file tanpa menulisnya, dan menyimpan keadaan tab atau buffer yang terbuka
EvergreenTree
Ya, saya mengerti kemudian dari komentarnya.
Sim

Jawaban:

6

Vim dapat melakukan ini, meskipun mungkin agak kikuk dan mengambil beberapa pengaturan.

romainl membantu Anda session. Bit yang hilang adalah file swap :preserve,, dan &flag untuk cpoptions.

Swap file dimaksudkan untuk pemulihan jika Vim atau sistem Anda rusak. Mereka memungkinkan Anda untuk memulihkan perubahan yang belum disimpan (dengan beberapa batasan, lihat :he swap-file). Namun, ketika Vim keluar secara normal, Vim menghapus semua file swap yang digunakannya, bahkan jika buffer memiliki perubahan yang belum disimpan.

Di situlah :preservedan cpoptions's &datang dalam. :preservePasukan Vim untuk menulis semua buffer ke swap file mereka segera (sebagai lawan standar setelah 4 detik atau 200 karakter, atau apa pun pilihan Anda telah menetapkan untuk). Doing :set cpoptions+=&memberitahu Vim untuk tidak menghapus file swap yang disimpan :preserveketika keluar secara normal.

Sayangnya, Vim tidak secara otomatis membersihkan file swap ketika memulihkan dari mereka, sehingga Anda dapat segera berakhir dengan direktori yang terlihat seperti ini:

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

Anda dapat menghapus yang lebih lama secara manual, tetapi Vim hanya akan secara otomatis menawarkan untuk memulihkan jika ada *.swpfile di mana ia akan meletakkan file swap yang baru. The :recoverperintah akan memaksa Vim untuk mencari swap file untuk pulih dari.

Dengan menggunakan perintah otomatis, Anda dapat mengotomatiskan pelestarian (mungkin dengan QuitPreacara) dan memulihkan (mungkin dengan BufReadatau BufReadPost). Recover.vim adalah sebuah plugin yang mungkin berfungsi sebagai alternatif yang lebih ramah untuk mengelola pemulihan. Tampaknya juga menangani pembersihan file swap. Saya tidak yakin bagaimana ini akan menangani direktori dengan .swotetapi tanpa .swpfile. Anda mungkin masih perlu menggunakan :recoveruntuk kasus itu.

Obsesi vim adalah plugin lain yang mengklaim untuk membuat sesi penanganan lebih mudah.

8bree
sumber
1

Iya. Ini disebut "sesi" dan Anda dapat membacanya di:

:help session
romainl
sumber
1
Saya sadar tentang sesi. Tapi sepertinya tidak sama - ini menyimpan semua buffer yang dibuka dan tab (dan pengaturan) tetapi jika Anda memiliki beberapa perubahan di salah satu buffer Anda harus menulisnya ke disk sebelum keluar. Dalam teks luhur Anda tidak perlu menyimpan file yang dibuka saat keluar - sublim menyimpan semua perubahan di tempat yang terpisah dan mengembalikannya saat dibuka kembali. Jadi file asli tidak tersentuh pada disk tetapi perubahannya tidak hilang juga
Malas
Ya, itu akan menjadi perbedaan utama. Tidak tahu apakah itu dapat dicapai dengan cara apa pun tanpa menggunakan tmux / screen / detach.
romainl