Vim: Bölünmüş pencereyi kaybetmeden arabelleği sil


149

Bir arabellek silindiğinde ("bd [elete]" komutu), yalnızca arabelleği silmez, aynı zamanda ara belleğin bulunduğu bölünmüş pencereyi de kaldırır.

Bir arabelleği silmenin / boşaltmanın ve pencereyi bölmenin bir yolu var mı?



Bu benim için iyi çalıştı.
Rumple Stiltskin

[Bu DeleteCurBufferNotCloseWindow()iyi çalışıyor ve oldukça okunabilir] ( stackoverflow.com/a/44950143/3625404 ).
qeatzy

Yanıtlar:



327

bp|bd # yapacağım.


Ayrıntılar: bp("önceki tampon") bizi geçerli penceredeki farklı bir arabelleğe taşır ( bnda çalışır), ardından bd #("tampon silme" "alternatif dosya") az önce taşındığımız tamponu siler. Bkz: help bp, help bd, help alternate-file.


71
Ne kadar zamandır böyle basit bir şey aradığımı bilmiyorsunuz, bu kadar basit, gerektirmeyen ve tüm komut dosyasını çalıştırmak için. Benim VIMRC, şimdi CTRL + C için bu harita var:nnoremap <C-c> :bp\|bd #<CR>
Cloud

11
Kullanarak yeniden eşleştirmeye çalışıyorum nmap <silent> <leader>d :bp|bd #<CR>, ama alıyorum E94: No matching buffer for #<CR>.
Fábio Perez

22
|(Ör. :bp\|bd) Önüne bir ters eğik çizgi koyun
Çamur

4
Bunun için bir eklenti kurmak zorunda olmamam gerektiğini biliyordum. Teşekkürler!
Akash Agrawal

2
b#|bd #sonraki / önceki yerine son kullanılan arabelleğe geçecektir. Ancak, varsa gizli arabelleklere atlayacak set hidden, bu yüzden bundan kaçınmak için daha akıllı bir BD işlevi yaptım.
c24w

15

Eğer için aşağıdaki ekleyebilir .vimrcolması Bdolarak işe bdama pencere böler dokunmadan:

command Bd bp\|bd \#

Bunu Mud'un cevapladığı şeye faydalı bir tamamlayıcı olarak buldum .


.Vimrc dosyamda tam olarak bu var. :)
Çamur

Ve bir tamponu boşaltmak, silmek ve silmek için 3 komut ekleyebilirsiniz: komut! BUN bp \ | bun \ # command! BD bp \ | bd \ # komutu! BW bp \ | bw \ # Bufkill'in sağladığı ile eşdeğerdir, ancak 700+ satır eklentisi yerine vimrc'de 3 satır vardır!
fievel

3
Benim için sadece .vimrc'de bununla çalıştı command! Bd bp|bd #. Yukarıdaki komut `` ile arabelleği arabellekler listesinde tuttu.
mljrg


3

@ Çamura benzer bir şey yapıyorum, ancak #arabellek listesindeki önceki arabellek yerine önceki görünüm ara belleğine geç. İşte benim bir bağlayıcı anahtar .vimrc:

nnoremap <silent> <leader>q :lclose<bar>b#<bar>bd #<CR>

Konum pencerelerini kapatın, varsa önceki görünüm arabelleğine geçin ve ardından son anahtarlanan arabelleği kapatın.


1

Seçimim

:sb # | bd #
:sb 1 | bd #
: <1. Recall Buffer> | <2. Delete Buffer>

Böyle düşün! /// <1. Arabellek Geri Çağır> | <2. Arabelleği Sil>

:vert sb 2 | bd #
:vert sb <tab key~completed file(buffer)name> | bd #

neden?! 3 (+ 1) anahtar kelimeyi hatırlamak kolaydır!

  1. sb Instagram Hesabındaki Resim ve Videoları split_buffer
  2. bd buffer sil ▶ basit 2 anahtar kelime
  3. # veya Arabellek sayısı
  4. vert ▶ dikey kısa biçimi (split_buffer veya başka)

Diğer pek çok durumda bu kolay ve çok faydalı!

İyi günler! :)


0

Eskiden kullanırdım:

:bp<bar>sp<bar>bn<bar>bd<CR>

Ama penceremi kapattığı bazı durumlar buldum. Bunun da ötesinde, sonraki veya önceki arabellek bölmede görüntülenmesini istediğiniz şey olmayabilir.

Şimdi bunu yapıyorum:

  • üzerinde çalışmak istediğim arabelleğe geç
  • Alternatif arabelleği sil

nnoremap <leader>d :bd#<CR>

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.