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.