Saya perlu mengedit banyak file baru-baru ini untuk perubahan kecil di setiap file. Untuk sampai ke setiap file, saya melihat-lihat NERDtree dan membuka satu file demi satu. Ketika saya membuka semakin banyak file, saya perhatikan bahwa penggunaan memori saya bertambah banyak. Penutupan vim memberi saya banyak memori kembali.
Saya telah menginstal beberapa plugin, tetapi saya berpikir bahwa alasan penggunaan memori saya tumbuh secara drastis adalah karena jumlah buffer yang saya buka setelah beberapa pengeditan.
Apakah ada cara untuk membatasi jumlah buffer yang memungkinkan vim untuk dibuka pada satu waktu, secara otomatis menutup buffer lama sehubungan dengan waktu pengeditan?
b:variables
tetapi dalams:plugin[bufid]
jika pengelola plugin lebih suka untuk tidak mencemarib:
"namespace" publik . Dalam hal ini, menghapus buffer tidak harus mengumpulkan semua variabel / memori yang terkait.Yang berikut harus menjawab pertanyaan Anda.
Ini akan dimasukkan ke dalam plugin. Kemudian, Anda harus memilih cara menggunakannya.
sumber
Saya tidak yakin bagaimana cara mendapatkan buffer tertua sehubungan dengan waktu pengeditan, tetapi orang bisa, sebaliknya, mencoba untuk menutup buffer yang belum diedit yang tertua. Sesuatu seperti:
Catatan:
vim.buffers
adalah daftar setiap buffer yang dibuka di sesi saat ini, sehingga juga termasuk buffer yang tidak terdaftar. Ini tidak sama dengan daftar yang dikembalikan oleh:ls
.options['buflisted']
.options['modified']
mari kita periksa apakah buffer diubah.N
adalah jumlah buffer terdaftar yang tidak dimodifikasi yang ingin Anda buka.Berkat jawaban Luc Hermitte dari mana saya belajar cara mendapatkan stempel waktu, Anda dapat menggunakan yang berikut ini, untuk mengeluarkan yang tidak aktif terlama dulu:
sumber
:let buffers = filter(range(0, bufnr('$')), 'buflisted(v:val) && ! getbufvar(v:val, "&modified")')
+:exe 'bw '.join(buffers, ' ')
bw
Bantuan IIRC mengatakan Anda tidak boleh menggunakannya "kecuali Anda tahu apa yang Anda lakukan". Bukan saya. :):bw
, dan tidak pernah:bd
. Saya belum pernah melihat titik menghapus hampir semua dari buffer, tetapi sebenarnya tidak semuanya.