Bir pencerenin altta mı yoksa üstte mi, solda mı yoksa sağda mı olduğunu söylemek mümkün müdür?


13

Bir pencerenin konumunu kontrol etmek için bazı işlev olup olmadığını bilmiyorum, yani şu anda altta veya üstte, solda veya sağda oturuyor mu ??

__________________________
|           |            |
|           |            |
|  left     |   right    |
|           |            |
|           |            |
|___________|____________|

__________________________
|                        |
|          top           |
|________________________|
|                        |
|         bottom         |
|_______________________ |

Ne yapmaya çalışıyorsun? (XY Sorunu)
mMontu

Geçerli düzen yatay ve tam tersi sadece iki pencere olduğunda pencere bölmelerini dikey döndürmek için bir işlev yazmaya çalışıyorum. Bu yüzden şu anki bölmelerin düzenini ve şu anki pencerem nerede olduğunu bilmem gerekiyor
Aaron Shen

3
Neden sadece kullanmıyorsunuz ctrl-W_L? (veya ctrl-W_R)
Vitor

Uygun geçiş işlevi olmasını istiyorum, otomatik olarak mevcut düzeni algılar ve beynimde düşünmek ve kullanmak için doğru komutu seçmek yerine benim için doğru dönüşü yapar. Tüm yapmam gereken her zaman aynı anahtar eşlemesine basmak.
Aaron Shen

@AaronShen Pencere geri yükleme komutlarına bir göz atın .
muru

Yanıtlar:


4

Sorunun yorumlarını özetlemek:

- Geçerli düzen yatay ise pencere bölmelerini dikey olarak döndürmek için bir işlev yazmaya çalışıyorum ve sadece iki pencere olduğunda tam tersi.

- Neden sadece ctrl-W_L kullanmıyorsunuz? (veya ctrl-W_R)

- Uygun geçiş işlevi olmasını istiyorum, mevcut düzeni otomatik olarak algılar ve beynimde düşünmek ve kullanmak için doğru komutu seçmek yerine benim için doğru rotasyonu yapar. Tüm yapmam gereken her zaman aynı anahtar eşlemesine basmak.

Sadece iki pencere içeren mizanpajlar için aşağıdaki fonksiyonun çalışması gerekir:

function! Rotate()
   " save the original position, jump to the first window
   let initial = winnr()
   exe 1 . "wincmd w"

   wincmd l
   if winnr() != 1
      " succeeded moving to the right window
      wincmd J " make it the bot window
   else
      " cannot move to the right, so we are at the top
      wincmd H " make it the left window
   endif

   " restore cursor to the initial window
   exe initial . "wincmd w"
endfunction

nnoremap <F3> :call Rotate()<CR>

harika işlevi, althought Ben tüm vim komut dosyaları bilmiyorum, ama teşekkürler, mükemmel çalışır !! btw, ben sadece bir ek kontrol eklemek sadece iki pencere olduğunda çalışır.
Aaron Shen

6

Ne yazık ki bunu kontrol etmenin bir yolu olduğunu sanmıyorum.

Bunu kontrol eden özel bir işlev yapmanın bir yolu olabilir: Pencere numaraları her zaman sol üstte 1'den sağ altta n'ye kadar numaralandırılır. Belki bir geometri verileri ile kombine kullanabilir winwidth(), winheight()ve değerleri &linesve &columnsistenen haritası oluşturmak için?

Genel olarak bunun daha karmaşık düzenleri desteklemesi gerektiğini unutmayın. Örneğin sol taraf ikiye ayrılırsa çıktı ne olmalıdır? Belki de işlevin ilk etapta var olmamasının nedeni budur ...

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.