Bagaimana cara menyimpan tata letak jendela, split, dan buffer?

56

Saya memiliki beberapa tugas yang saya kerjakan dalam satu repositori. Saya ingin membuat "ruang kerja" untuk mengerjakannya.

Satu "ruang kerja" atau "tata letak penyangga" akan memiliki semua file yang saya perlukan untuk bekerja secara terbuka di tata letak yang saya inginkan (menggunakan ^w+v, ^w+suntuk membagi jendela).

Kemudian, ketika saya mulai mengerjakan tugas lain saya ingin menyimpan tata letak saya saat ini, pindah ke yang lain, tetapi saya ingin dapat kembali ke tata letak sebelumnya.

Apa cara terbaik untuk mencapai ini?

Nebril
sumber

Jawaban:

48

Anda dapat menggunakan vim :mksessiondan menulis setiap "ruang kerja" ke file yang berbeda, kemudian membuka kembali sesi menggunakan vim -S session_file, namun, jika Anda terbuka untuk menggunakan plugin maka saya menemukan plugin Startify adalah persis apa yang saya butuhkan untuk skenario seperti ini: https : //github.com/mhinz/vim-startify

Ia melakukan pekerjaan yang baik dalam mengelola sesi, dalam vim dan mccvim, dan memberi Anda daftar file terbaru saat Anda membuka vim. Ini akan otomatis berubah ke direktori kerja yang tepat untuk Anda juga. Ini juga memungkinkan Anda menyematkan file ke layar pembuka startify, yang bagus untuk akses mudah ke hal-hal seperti Anda.vimrc

craigp
sumber
23

Anda dapat menggunakan plugin obsesi vim tpope untuk mengelola sesi dengan mudah. Ini seperti pembungkus untuk built-in Vim mksession, tetapi menyediakan satu set basa-basi lain juga.

Anda dapat menyimpan sesi saat ini (atau tata letak penyangga) dengan memberikan perintah :Obsess. Jika Anda tidak memberikan argumen, itu menulis file sesi yang dipanggil Session.vimsecara default.

Untuk memuat ulang sesi, gunakan vim -S <session-name>atau :source <session-name>jika Anda sudah berada di dalam Vim.

Yang menyenangkan adalah, Anda tidak harus ingat untuk menyimpan sesi setiap kali Anda keluar dari Vim. Secara otomatis dikelola oleh plugin.

Fitur lain yang sangat penting dari obsesi vim adalah ia tidak menyimpan opsi dan peta. mksessionmenangkap opsi dan peta saat ini, yang Anda tidak ingin terjadi jika Anda hanya ingin menyimpan tata letak buffer. Itu juga mengganggu ketika plugin diperbarui, dll.

thameera
sumber
Bisakah ini mengelola beberapa file sesi?
Nebril
1
@Nebril Itu bisa. Saat Anda menyimpan sesi, gunakan format :Obsess <session-name>. Gunakan nama sesi tertentu yang Anda inginkan saat memuat ulang.
thameera
Saya menemukan bahwa Obsession tidak ingat perpecahan vertikal, sedangkan mksession tidak. Saya hanya mengotak-atik masalah ini malam ini, apakah ada sesuatu yang saya lewatkan?
baxx
1
@ baxx Obsession memang mengingat semua jenis perpecahan. Mungkin Anda menutup pemisahan sebelum berhenti vim?
thameera
2
@ Baxx Ini sudah tua tapi saya ingin menambahkan catatan kalau-kalau ini membantu orang lain. Alasannya tampaknya obsesi adalah melupakan perpecahan mungkin karena Anda berhenti semua perpisahan Anda untuk meninggalkan vim. Itu berarti keadaan terakhir adalah jendela terakhir Anda ketika Anda menutup vim, itulah yang menyimpan obsesi. Saya memiliki masalah yang sama dengan tab dan jawabannya adalah menggunakan: qa untuk keluar dari semua jendela, splits, tab yang terbuka. Jika seseorang memiliki opsi yang lebih baik, silakan beri tahu kami.
TC0072
12

Sebagai catatan, saya ingin menunjukkan bahwa saya membangun lagi plugin dhruvasagar / vim-prosession sebagai ekstensi untuk tpope / vim-obsesi yang meningkatkannya lebih jauh untuk membuat & mengelola sesi vim secara default dalam repositori terpusat sebagai per konfigurasi pada basis per direktori dan memuatnya secara otomatis saat Anda meluncurkan vim tanpa argumen di direktori. Ini juga memungkinkan Anda untuk beralih di antara berbagai sesi untuk kenyamanan.

Dhruva Sagar
sumber
Kedengarannya luar biasa. Jika saya bisa mengelola file sesi dalam folder yang mirip dengan undo dan backup file untuk menjaga proyek saya dari tidak berantakan dengan file swap yang mungkin hanya membuat saya berpikir.
dragon788
1

Anda dapat mencoba plugin vim-workspace , fitur manajemen sesi yang otomatis, mencakup untuk direktori kerja Anda saat ini, dan cukup sederhana (hanya perlu dijalankan ToggleWorkspacesekali).

Jaybay
sumber