Terima kasih banyak, perilaku vim ini telah banyak menyadap saya! btw, versi terbaru dari bufkill ada di github.com/qpkorr/vim-bufkill
fsrechia
326
bp|bd # akan melakukannya.
Detail: bp("buffer sebelumnya") memindahkan kami ke buffer berbeda di jendela saat ini ( bnakan berfungsi juga), lalu bd #("buffer delete" "file alternatif") menghapus buffer yang baru saja kami pindah. Lihat: help bp, help bd, help alternate-file.
Anda tidak tahu sudah berapa lama saya mencari sesuatu seperti ini yang sangat sederhana, tidak memerlukan seluruh skrip untuk menjalankannya. Dalam VIMRC saya, sekarang saya memetakan ini untuk CTRL + C:nnoremap <C-c> :bp\|bd #<CR>
Cloud
11
Saya mencoba memetakan ulang menggunakan nmap <silent> <leader>d :bp|bd #<CR>, tapi saya mengerti E94: No matching buffer for #<CR>.
Fábio Perez
22
Letakkan backslash di depan |(misalnya :bp\|bd)
Mud
4
Saya tahu saya tidak perlu menginstal plugin untuk ini. Terima kasih!
Akash Agrawal
2
b#|bd #akan beralih ke buffer yang terakhir digunakan alih-alih yang berikutnya / sebelumnya. Namun, itu akan melompat ke buffer tersembunyi jika sudah set hidden, jadi saya membuat fungsi BD yang lebih cerdas untuk menghindarinya.
c24w
15
Anda dapat menambahkan yang berikut ini agar Anda .vimrcbisa Bdbekerja bdtetapi tanpa menyentuh celah jendela:
command Bd bp\|bd \#
Saya menemukan ini sebagai pelengkap yang berguna untuk apa yang dijawab Mud.
Dan Anda dapat menambahkan 3 perintah untuk membongkar, menghapus, dan menghapus buffer: perintah! BUN bp \ | bun \ # perintah! Perintah BD bp \ | bd \ #! BW bp \ | bw \ # yang setara dengan apa yang disediakan bufkill tetapi dengan 3 baris di vimrc, bukannya plugin 700+ baris!
fievel
3
Bagi saya ini hanya berfungsi dengan ini di .vimrc command! Bd bp|bd #. Perintah di atas dengan `` menyimpan buffer di daftar buffer.
Saya melakukan sesuatu yang mirip dengan @Mud, tetapi beralih ke buffer tampilan sebelumnya #, bukan buffer sebelumnya dalam daftar buffer. Berikut ini adalah kunci yang mengikat di saya .vimrc:
Tetapi saya menemukan kesempatan-kesempatan tertentu ketika menutup jendela saya. Selain itu, buffer berikutnya atau sebelumnya mungkin bukan yang ingin Anda tampilkan di split.
DeleteCurBufferNotCloseWindow()
berfungsi dengan baik dan cukup mudah dibaca] ( stackoverflow.com/a/44950143/3625404 ).Jawaban:
Saya sangat suka bufkill.vim ada repo github juga
sumber
bp|bd #
akan melakukannya.Detail:
bp
("buffer sebelumnya") memindahkan kami ke buffer berbeda di jendela saat ini (bn
akan berfungsi juga), lalubd #
("buffer delete" "file alternatif") menghapus buffer yang baru saja kami pindah. Lihat:help bp
,help bd
,help alternate-file
.sumber
nnoremap <C-c> :bp\|bd #<CR>
nmap <silent> <leader>d :bp|bd #<CR>
, tapi saya mengertiE94: No matching buffer for #<CR>
.|
(misalnya:bp\|bd
)b#|bd #
akan beralih ke buffer yang terakhir digunakan alih-alih yang berikutnya / sebelumnya. Namun, itu akan melompat ke buffer tersembunyi jika sudahset hidden
, jadi saya membuat fungsi BD yang lebih cerdas untuk menghindarinya.Anda dapat menambahkan yang berikut ini agar Anda
.vimrc
bisaBd
bekerjabd
tetapi tanpa menyentuh celah jendela:command Bd bp\|bd \#
Saya menemukan ini sebagai pelengkap yang berguna untuk apa yang dijawab Mud.
sumber
command! Bd bp|bd #
. Perintah di atas dengan `` menyimpan buffer di daftar buffer.Lihat menghapus buffer tanpa menutup jendela pada wiki kiat VIM.
sumber
Saya melakukan sesuatu yang mirip dengan @Mud, tetapi beralih ke buffer tampilan sebelumnya
#
, bukan buffer sebelumnya dalam daftar buffer. Berikut ini adalah kunci yang mengikat di saya.vimrc
:Tutup jendela Lokasi, jika ada, pindah ke buffer tampilan sebelumnya, lalu tutup buffer beralih terakhir.
sumber
Pilihan saya adalah
Pikirkan Seperti itu! /// <1. Ingat Buffer> | <2. Hapus Buffer>
Mengapa?! Mudah diingat 3 (1) kata kunci!
Itu mudah dan sangat berguna dalam banyak kasus lainnya!
Semoga harimu menyenangkan! :)
sumber
Dulu saya menggunakan:
Tetapi saya menemukan kesempatan-kesempatan tertentu ketika menutup jendela saya. Selain itu, buffer berikutnya atau sebelumnya mungkin bukan yang ingin Anda tampilkan di split.
Sekarang saya melakukan ini:
nnoremap <leader>d :bd#<CR>
sumber