2010-11-16 11 views
5

Geçerli sekme sayfasında bir Vim işlevinden kaç pencerenin açık olduğunu bilmek isterim; özellikle, belirli bir pencerenin örneğin bir autocmd'den bir sekme sayfasında son olup olmadığını bilmek kullanışlı olacaktır. Herhangi bir fikir?VIM'de Windows sayısı

cevap

5

Sanırım hepsini winnr() komutuyla yapabilirsiniz. kendisi size pencere numarasını söyler tarafından

winnr() Eğer şu anda. winnr ('$') size son (alt) penceresini söyler

dönecekti aşağıdaki '1' sen olsaydın aksi alt penceresi ve 0: Bu sadece alt pencerede bir şey yürütülecek gibi

echo winnr() == winnr('$') 

sonra bir şeyler yapabileceğini seni örnek alarak:

:autocmd WinEnter * if winnr() == winnr('$')|echo "Welcome to the bottom window"|endif 

Caveat: Bu dikey pencereler için iyi çalışıyor, ancak yatay olanlar için yatay veya dikey pencereleri karıştırıp eşleştireceğini hiç sanmıyorum.

+2

Aslında vim belgelerine göre (http://vimdoc.sourceforge.net/htmldoc/eval.html#winnr%28%29) winnr ('$') geçerli sekmedeki pencerelerin sayısı IS. – AmokHuginnsson

4

Ayrıca aşağıdaki yapabilirdi:

let window_counter = 0 
windo let window_counter = window_counter + 1 
echo window_counter 

:windo komut mevcut sekmenin her pencerede ex komutu çalıştırır.

+0

winnr ('$') yeterli bir çözümdür. Ayrıca, kodunuz pencere sayımının nadiren gerekli etkisi olan son pencerelerin seçilmesiyle sonuçlanacaktır. – AmokHuginnsson