Pertimbangkan kasing dengan banyak split di jendela. vim memungkinkan dengan cepat "memaksimalkan" pemisahan saat ini untuk mengambil seluruh jendela melalui <C-W>
o
.
Adakah cara mendapatkan vim untuk "mengingat" pemisahan yang ada sebelumnya dan kembali ke keadaan ini setelah dieksekusi <C-W>
o
?
EDIT: Untuk memperjelas, saya mencari cara untuk melakukan ini tanpa menggunakan plugin pihak ketiga.
Jawaban:
Cara paling sederhana untuk melakukan ini mungkin dengan file sesi, yaitu skrip vim (yang vim dapat hasilkan secara otomatis untuk Anda) yang akan memulihkan lingkungan pengeditan sebelumnya.
Anda dapat membuat file sesi baru menggunakan
:mksession <filename>
. Anda dapat memulihkan sesi itu dengan menjalankan skrip sesi yang dibuat:source <filename>
,.Dengan demikian, Anda bisa menyimpan sesi saat ini sebelum memaksimalkan jendela dan mengembalikannya ketika Anda ingin "unmaximize" jendela.
Dengan menggunakan ini, Anda bisa memetakan ulang perintah windowing yang sesuai untuk menyimpan sesi sebelumnya, dan menambahkan pemetaan baru untuk "membatalkan" perintah windowing terakhir dengan mengembalikan sesi. Sebagai contoh:
nnoremap <C-w>o :mksession! ~/session.vim<CR>:wincmd o<CR>
dan seterusnya untuk semua perintah windowing yang ingin Anda dukung (lihat:help CTRL-W
, ada banyak). The!
mencegah kesalahan yang berkaitan dengan Timpa file sesi yang ada.nnoremap <C-w>u :source ~/session.vim<CR>
untuk "membatalkan" perintah windowing terakhir.Jika Anda ingin menjadi sangat kuat, Anda dapat memperluas ini melalui fungsi untuk menyimpan file sesi dalam tumpukan dan menghapusnya untuk mendapatkan rantai undo penuh, meskipun pada saat itu mungkin lebih efisien untuk menulis banyak fungsi untuk melacak jendela perintah sejarah di memori ... di mana Anda kemungkinan menduplikasi plugin yang sudah melakukan hal semacam ini.
sumber
Pilihan lain bisa dengan membuka jendela Anda saat ini di tab baru, lalu cukup tutup tab setelah Anda selesai.
Perintah
:split
(atau:sp
singkatnya), tanpa argumen, memiliki efek membuka split baru dengan buffer yang sama dengan split saat ini. The:tab
perintah dapat menjalankan banyak perintah yang berhubungan dengan jendela, mengubah mereka untuk menggunakan tab sebagai gantinya. Menggabungkan ini bersama-sama memberi:tab sp
, yang akan membuka tab baru dengan buffer saat ini.Setelah itu, Anda dapat menutup tab baru dengan
:q
atau:tabclose
(:tabc
singkatnya).sumber
Saya menggunakan plugin ZoomWin ( https://github.com/itspriddle/ZoomWin ) untuk skenario ini. Menekan CtrlW- Ountuk kedua kalinya mengembalikan tata letak jendela Anda.
sumber
Apa yang Anda gambarkan terdengar persis seperti fitur yang menggunakan nama "zooming". Sudah ada jawaban bagus pada SO yang melakukannya dengan sangat baik.
EDIT: Jawaban eksplisit, disalin dan ditempel dari SO . Saya menempatkan potongan di bawah ini di .vimrc saya dan kemudian memohon
di command prompt vim saya.
sumber
Posting ini sudah tua, jawaban yang diterima tidak perlu dikhawatirkan
terminal buffer
.Jawaban yang diterima digunakan
session
untuk melakukan trik, tetapisession
tidak dapat sepenuhnya memulihkanterminal buffer
:Tommcdo ini jawabannya masih bekerja,
<c-w>:tab split
bekerja dengan baik padaterminal buffer
. Layak peta:sumber