Menggunakan editor vim, tugas umum adalah menelusuri buffer. Saya sekarang menggunakan perintah standar seperti :ls
atau a :bnext
. Bahkan saya atur di .vimrc saya:
"move amongs buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Saya ingin menelusuri buffer sebagai daftar di jendela perbaikan cepat, dengan cara sederhana (= sangat baik) mengimplementasikan plugin MRU .
Apakah ada plugin yang sesederhana MRU tetapi bekerja pada buffer?
OK, solusi yang mungkin bisa menggunakan :CtrlpBuffers
perintah, bagian dari plugin Ctrlp tapi saya bukan penggemar Ctrlp, karena kadang-kadang memiliki beahviours aneh saya tidak sepenuhnya mengerti (pilihan mode fuzzy ...); jadi saya mencari sesuatu yang sangat sederhana seperti plugin MRU.
BTW, saya bercanda dengan :cexpr {expr}
perintah, mencoba mengisi windows perbaikan cepat dengan isi :buffers
daftar, tanpa hasil (mungkin karena vimscripts pemrograman ketidaktahuan saya)
Ada saran ?
:bnext
alih-alih:cnext
?Jawaban:
Anda dapat mengisi daftar perbaikan cepat dengan setiap buffer seperti ini:
setqflist()
mengambil daftar item Kamus yang menjelaskan setiap kesalahan (nama file, nomor baris, posisi, dll.). Dalam hal ini kami menetapkan sekumpulan informasi minimal: nomor buffermap()
mengambil Daftar dan ekspresi (string) dan mengembalikan Daftar ekspresi baru yang diterapkan ke setiap item Daftar input. Di sini, kami mengambil Daftar nomor buffer terdaftar dan memformatnya untuk digunakan disetqflist()
('{"bufnr": v:val}'
, di manav:val
nilai item dalam daftar)filter()
memfilter Daftar, menghapus elemen yang tidak memenuhi ekspresi yang diberikan. Di sini ekspresi adalahbuflisted(v:val)
, artinya nomor buffer ada dan terdaftar, yaitu muncul dalam:ls
outputrange(a, b)
menghasilkan Daftar nomor daria
hinggab
bufnr()
mengembalikan jumlah nama buffer yang diberikan. Jika argumennya adalah'$'
, ia mengembalikan nomor buffer tertinggiItu banyak untuk diketik, dan tidak terlalu berkesan, sehingga Anda bisa membungkusnya dengan perintah di vimrc Anda:
Sekarang Anda bisa menggunakannya
:Qbuffers
untuk mengisi daftar perbaikan cepat.Jika Anda ingin ini diperbarui secara otomatis ketika buffer baru ditambahkan, Anda dapat melakukan sesuatu seperti ini:
Saya tidak akan merekomendasikan ini, karena akan membuat daftar perbaikan cepat cukup tidak dapat digunakan untuk hal-hal seperti
:make
atau:grep
.sumber
Anda harus mencoba pemetaan ini:
Saat diminta, ketikkan nomor buffer yang diinginkan dan tekan Enter.
sumber
Silahkan lihat di Plugin bufexplorer . Ini membuka daftar semua buffer yang dapat dijelajahi di sidebar, mirip dengan plugin MRU yang disebutkan. Juga, ada beberapa plugin seperti itu di vim.org .
PS: Anda sudah menanyakan pertanyaan yang sama tentang Stack Overflow ; tolong jangan kirimkan pertanyaan identik ke beberapa situs secara paralel!
sumber