Vim'den çıkmadan bir tamponu kapatın ve boşaltın


54

Genellikle, bazı bilgileri geçici bir ara belleğe yükler ve sonra onu kapatırım :clo!. Ancak bu, nohiddenayarlamış olmama rağmen tamamen boşaltmak yerine arabellek gizler . Bu yorucu buluyorum çünkü Vim'i bıraktığım zaman, önceden düşündüğüm (attığım içerik) hakkında ekstra bir onay alıyorum.

Bunun :q!yerine sadece kullanabilirdim , ama bu içine girmek kötü bir alışkanlıktı, çünkü sadece bir tampon kalmışsa Vim'den tamamen çıkacak, bu da can sıkıcı bir durum. Daha da kötüsü, eğer yazım hatası :qa!yaparsam çok iş kaybedebilirim.

Orta bir zemin var mı? Mevcut arabelleği öldüren ama Vim'den çıkmayan bir komut istiyorum. Vimscript'te yazmaya karşı değilim, ancak komut zaten mevcutsa bundan kaçınmayı tercih ederim.

Yanıtlar:


69

Tam olarak bunu yapmak için bir komut var: :bdeleteya da sadece :bd. Varsayılan olarak mevcut tamponu kaldıracak. Diğer arabelleği boşaltmak için, önce tüm arabelleğin listesini :bufferskomut ile alın ve bundan sonra :bdkaldırılacak numarayı belirleyebilirsiniz . Ayrıca :bd+ space+ tabarabellek adını kullanarak tamamlanmasına izin verir.


1
Bu tam olarak istediğim gibi olmayan son açık arabellekte çalışacak , ancak bırakmadığından, amaçlarım için yeterince iyi.
Kevin

Vim-bbye eklentisi aradığınız şey olabilir: github.com/moll/vim-bbye
alxndr

1
Bu çalışmaz vi
redolent

Ayrıca, yerleşik takma adı :lshatırlamak daha kolaydır (imo) ve aynı şeyi yapar:buffers
kuzyn

Bu tamponu kaldırmaz. Aslında onu kapatmıyor bile. Bu sadece 'listelenmiş' olarak belirlenir. vim.wikia.com/wiki/Vim_buffer_FAQ
BTRUE

27

: Bwipeout (veya: bw) komutunu kullanarak bir tamponu tamamen silebilirsiniz. Bu, arabellek, kendisine eklediğiniz tüm işaretler, seçenek ayarları vb. Dahil olmak üzere bellekten tamamen kaldırır. Benzer şekilde: bdelete (veya: bd) arabelleği kaldırır, ancak bellekte bırakır ve işaretleri ve seçenek ayarlarını tutar.

Tom Hale'in yorumuna göre, Vim belgeleri şunları kullanmanızı önerir: bd over: bw Ne yaptığınızı bilmiyorsanız. Kullanma eğilimindeyim: bw çünkü arabelleği bellekten tamamen kaldırma fikri gibi, ve arabelleğimi kapattıktan sonra kalmalarını gerektiren noktalara kadar çok fazla işaret kullanmam.

: Quit (: q) komutu gibi, arabellek değiştiyse Vim hata verir. Bunu ele almak için, istemi bastırmak için komuttan sonra bir ünlem işareti ekleyebilirsiniz. Her şeye ünlem işareti eklemek yerine, bir başka seçenek de vimrc'nize "set confirm" eklemektir. Bu set ile, vim sizden dosya değişikliklerini kapanışta kaydetmenizi ister.

: bufdo, tüm aktif tamponlarda başka bir komut veren kullanışlı bir komuttur. : Bufdo komutunu: bw /: bd komutuyla birleştirmek, tüm etkin arabellekleri bir kerede kaldırmanızı sağlar. Hataları önlemek için ünlem işaretini kullanabilirsiniz, ancak bunu yerleştirip yerleştirmeme: Bufdo, after: bw veya her ikisi de her biri için farklı sonuçlara neden olur:

:bd          - deletes the current buffer, error if there are unwritten changes
:bd!         - deletes the current buffer, no error if unwritten changes
:bufdo bd    - deletes all buffers, stops at first error (unwritten changes)
:bufdo! bd   - deletes all buffers except those with unwritten changes
:bufdo! bd!  - deletes all buffers, no error on any unwritten changes

:bw          - completely deletes the current buffer, error if there are unwritten changes
:bw!         - completely deletes the current buffer, no error if unwritten changes
:bufdo bw    - completely deletes all buffers, stops at first error (unwritten changes)
:bufdo! bw   - completely deletes all buffers except those with unwritten changes
:bufdo! bw!  - completely deletes all buffers, no error on any unwritten changes

:set confirm - confirm changes (Yes, No, Cancel) instead of error

İşte birkaç başka yararlı tampon komut:

:ls          - list open buffers
:b N         - open buffer number N (as shown in ls)
:tabe +Nbuf  - open buffer number N in new tab
:bnext       - go to the next buffer (:bn also)
:bprevious   - go to the previous buffer (:bp also)

Bu sorunun kapsamı dışında kalan tampon işlemesi için daha çok şey var. Bir göz atın:
http://vim.wikia.com/wiki/Vim_buffer_FAQ http://vimdoc.sourceforge.net/htmldoc/windows.html#buffers


Lütfen bu cevaba biraz açıklama ekler misiniz?
EvergreenTree

Yardım , "Ne yaptığınızı bilmiyorsanız bunu kullanmayın" diyor :bd, çoğu durumda bunun tercih edildiğini belirtiyor
Tom Hale

1
@TomHale "Tamponla :bwilgili her şey kaybolur. Bu tampondaki tüm işaretler geçersiz olur, seçenek ayarları kaybolur, vb." Ötesinde başka neler yapılması gerektiğini bilmek güzel olurdu . Eğer Vim'den tamamen vazgeçersem, olduğu gibi bir tamponu 'kapatmak' istersem bu bana çok mantıklı geliyor.
Kenny Evitt

Ben tercih ederim: bw over: bd çünkü en son kullanılan tampon belleğe gitmek için: bd ve ardından <ctrl - ^> tuşlarına basarsanız, bellekten çıkar. : bw bana daha fazla kontrol verir ve istediğimi yapar ^^
eli

bu harika! @ Soylent17 teşekkürler!
apollo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.