Pencereyi kapatmadan arabellek nasıl kapatılır?


23

Genellikle birkaç pencere açar ve bazı tamponları açık tutarım. Arabellek araştırmasındaki MO'm hızlı kısayollar kullanmak :bnve bu nedenle :bp, gereksiz arabellekleri arabellek gezinmemi engellemekten kapatmak istiyorum.

Ancak acı, çok açık olanları olması durumunda, pencerenin kapatılması :bdve verilmesiyle :bwsonuçlanıyor. Bir tamponu nasıl kapatırım (silerim) ve pencereleri bozulmadan bırakırım?

@ Peth'in cevabından ilham alan çözüm

:command! BW :bn|:bd#

Basit. Yalnızca bir arabellek açıkken iyi çalışmaz (dosyaları açma yöntemime bağlı olarak farklı davranışlar alıyorum) ancak bu büyük bir sorun değil. :)

Yanıtlar:


12

Bu bir acı olabilir, bu soru da tekrar tekrar gündeme gelir #vim(Freenode).

Bazı insanlar arabellekleri silmenizi ve :b partial<Tab>bunun yerine :bnhangilerinin işe yarayacağını , hangilerinin işe yaradığını değil, sorduğunuz şeyleri önermiyor .

Bunu yapmanın en iyi yolu, başka bir tampon belleğe geçmek ve sonra :bd#tabii ki haritalandırabilmektir.

Ayrıca bkz . Vim wikia'daki pencereyi kapatmadan arabellek silme .


Senaryo, resmi bir yol yoksa kabul etmeye istekli olduğum bir çözüme benziyor. :)
unperson325680

21

Bununla biraz uğraştım ve sonunda:

:bp | sp | bn | bd

Anahtar eşleme için kopyala / yapıştır sürümü:

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

Veya .vimrc'niz için bir komut (ile arayın: Bd):

komut Bd bp | sp | bn | bd

Adil bir bit test ettim ve çeşitli koşullarda tutarlı bir şekilde çalışıyor. Son tamponda kullanıldığında sizi yeni bir boş tamponla bırakacaktır.


3
Son tampon gibi her iki pencerede de açık bir arabellek kapatırsam bölmemi kaybederim. Viki betiğinden daha basit olması için +1 penceresini kapatmadan bd komutunu verin .
Leif Carlsen

Vim-bbye kullanıyordum ama cevabınız çok daha basit ve herhangi bir senaryoya bağlı değil. Teşekkür ederim.
Andrew-Dufresne

4

Pencere, arabellek görünüm penceresidir. (Bkz :help window.) İlişkili bir arabellek olmadan bir pencere olamaz. :enewYine de, geçerli pencere içeriğini boş bir tamponla değiştirmek gibi bir komut kullanabilirsiniz .


Tampon silme işleminden sonra vim'in başka bir tampon belleğe geçebileceğini veya gerekirse yeni bir tane açabileceğini düşünüyordum.
unperson325680

@progo, bu biraz komut dosyası, yani eklenti veya basit bir haritalama gerektirir.
Clint Pachl 11:11

2

bufkill.vim eklentisi olarak iyi çalışıyor. Birlikte kullanmak gibi vim-komut-w ilave işlevsellik ve incelikler için (son tamponu veya yakın vim ise son tampon / bölme ise bir bölünme kapanacak gibi).


2

İşte başka bir çözüm:

map <C-W>o <C-W>n<C-W><C-W><C-W>c

Ctrl + W tuşlarına basmak o zaman o sessizce yeni bir pencere oluşturur ve eski pencereyi kapatır. İmleç yeni pencerede bırakılır. Çok sayıda olumlu etki var:

  1. Orijinal bölünmüş boyutlarınız korunur.
  2. Yeni bölmeye boş bir arabellek yüklenir.
  3. Orijinal arabellek hala yüklenmiştir, onu kullanmak için: tamponları kullanın.
  4. Ctrl + o imleci eski tamponda eski konumuna getirerek geri dönmeniz gerektiğinde hareket ettirir.
  5. Sadece bir pencere yüklenmiş olsa bile iyi çalışır.

1

Sanırım sorun şu ki çoğu insan vim tamponu ve pencerenin olmadıkları bir şey olmasını bekliyor.

İnsanlar vim penceresini kendi arabellek listesine sahip bağımsız bir süreç olarak düşünme eğilimindedirler, ama ne yazık ki değildir. Bir vim penceresi, yalnızca tamponların görünüm alanıdır.
Bu nedenle, probleminiz veya farklı pencerenin aynı tampon listesini paylaşması sorunu gibi birçok sorun ortaya çıkar, böylece Pencere A'daki Arabellek 1'i düzenleyemezsiniz ve Pencere B'nin Arabellek 1'i arabellek listesinde yoksaymasını sağlayın.

Benim çözümüm, istediğiniz vim penceresini elde edebilmeniz için iki vim örneği açmaktır. WM'leri döşemek için en iyi şekilde çalışır.


1

Genellikle menüyü herhangi bir tampondayken açarım. Bu, sol paneldeki menüyü açacak ve imleç orada aktif olacaktır. Bu yüzden sadece aktif arabelleğe geri dönüp arabayı siliyorum.

Bundan sonra menüden başka bir dosyayı açabilirim.

Adımlarım:

:Vex

ctrl + w + w

:bd
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.