saya ingin :bd
dan :bw
untuk benar-benar keluar dari sesi vim saya jika, setelah buffer saat ini dihapus, daftar buffer kosong (mis. jika, sebelum menjalankan :bd
atau :bw
, Saya hanya memiliki buffer saat ini dalam daftar buffer). Bagaimana saya bisa mencapai ini? Saya berasumsi itu seharusnya cukup mudah, tetapi googling belum benar-benar menghasilkan sesuatu yang bermanfaat, dan sejauh ini saya belum berhasil menulis autocmd
untuk menyelesaikan ini.
3
== 1
untuk== 2
(Hal yang sama berlaku dalam solusi saya juga). Adakah yang tahu mengapa ini terjadi? Apakahbufnr
selalu sertakan buffer "kosong", dan lakukanbuflisted
mengembalikan true untuk buffer kosong?:bdelete
itu juga, agar Vim berhenti. Menggunakan2
mungkin gagal jika Anda memulai Vim dengan afile
argumen; kemudian, tidak ada buffer kosong. Lebih baik tambahkan! empty(bufname(v:val)) && buflisted(...
ke filter.Solusi yang diusulkan mungkin bermasalah sehubungan dengan beberapa plugin. Ini adalah jalan pintas yang melakukannya untuk saya dan tampaknya lebih aman karena tidak bergantung pada autocmds:
Itu menggunakan
bd
kecuali ada buffer tunggal tanpa nama saat digunakanquit
sebagai gantinya.sumber
:e
akan menyebabkan vim keluar menggunakan yang diusulkanQuitIfLastBuffer()
fungsi danBufDelete
perintah otomatis, kecuali jika Anda memiliki sesuatu yang akan menyebabkan:e
untuk memicuBufDelete
. Selain itu, solusi Anda tidak persis sama - sepertinya Anda mengubah perilaku:q
, sedangkan pertanyaan dan solusi sebelumnya adalah tentang mengubah perilaku:bd
.