Pencerelerimi bir ızgara oluşumuna nasıl geri getirebilirim?


12

Aşağıdaki komut dizisinden olduğu gibi dört çeyrek daire halinde düzenlenmiş pencerelerim varsa:

  • :tabnew
  • :vsplit
  • :split
  • <C-W>l
  • :split

bunun gibi bir komut girilmesi <C-W>Jbunların artık kare olmamasına neden olur; bu durumda, bir pencereyi altta yüzmeye zorlar.

Bunun tam tersini nasıl yapabilirim - yani pencereleri kare bir forma sokmak için?

Okudum :help window-movingama yararlı bir şey görmedim.


1
<CW> J düğmesine bastığınızda ne elde etmeye çalıştığınız konusunda biraz net değilim. tanım gereği artık bir ızgara oluşumunda yer almamaktadır. Pencerelerinizle gerçekten ne yapmaya çalışıyorsunuz?
Zengin

3
@Rich Bence OP sadece pencereleri ızgara oluşumuna sıfırlamak isteyebilecek bir durumu örnekliyor.
Gonçalo Ribeiro

@ GonçaloRibeiro Doğru.
wchargin


Bir cevap olmasa da, kendi çözümünüzü yapmak için kod örnekleri için avlanırsanız , muhteşem Microviche projesini kontrol etmenizi öneririz .
Yeni İskenderiye

Yanıtlar:


4

Bildiğim kadarıyla, açık bölmeleri bölme ızgarasına yerleştirmenin kolay bir yolu yoktur. Bu durumda, bir ızgaraya geri dönmenin en kolay yolu yapıyı manuel olarak düzeltmektir:

  1. üstte yüzen ayrımı kapat
  2. ekranın yarısını kaplayan bölmeye dön
  3. ile yeniden böl :split <file>

Bu sizi bir tabloya döndürür. Pencere düzenini etkilemeden bölünmeleri manevra etmenin yolu , geçerli pencereyi [sayım] penceresiyle değiştiren [sayım] Ctrl - kullanmaktır W x .


Bunu yapabileceğimi biliyorum, ama birkaç dezavantajı var. (1) Pencere belirli bir arabellek için tek görünümse ve arabellek kirliyse, bunlardan hiçbiri istenmez :wqveya :q!istenmez. (2) Bu, imleç konumu gibi pencereye özgü ayarları sıfırlar. (3) Bu işlem devam eden farkları kıracaktır. Esasen, pencereler birinci sınıf vatandaştır; onları yok etmek ve yenilerini oluşturmak yeterli değildir.
wchargin

@WChargin Vim'i gizli arabelleklere izin verecek şekilde ayarlarsanız bunlardan bazıları kaybolur. Ama evet ...
derobert

2
Pencereyi kapatmak ve arabelleği istenen konuma bölmek yerine, gitmek istediğiniz yere yeni bir pencere bölün, taşımak istediğiniz pencereyle değiştirin, ardından (taşınan) yeni pencereyi kapatın.
tommcdo

4

En sevdiğiniz düzeni winsaveviewkomutu kullanarak kaydedebilirsiniz . Burada \svkolaylık sağlamak için eşliyorum:

nnoremap <Leader>sv :let g:myLayout = winsaveview()<CR>

Düzeninizi bozmadan önce çalıştırdığınızdan emin olun! ;-)

Şimdi düzeninizi yanlışlıkla kırdıysanız, geri yükleyebilirsiniz:

nnoremap <Leader>rv :call winrestview(g:myLayout)<CR>

4

Pencereleri yeniden düzenlemek için kullanılan varsayılan tuşlar yalnızca kendi yerel bölünmüş grupları içinde çalışır:

CTRL-W x   Exchange current window with next (in group)
CTRL-W r   Rotate windows down/right (in group)

Veya pencereyi en üst gruba ayırırlar:

CTRL-W  H | J | K | L   Move window to left/top/bottom/right-most edge

Tamponu diğer bölünmüş gruplardan birine taşımak istediğinizde bunlar yetersizdir.

Ama böyle durumlarda, WindowSwap eklentisi yardımcı olabilir . Herhangi bir keyfi pencerenin arabelleklerini değiştirmenize izin verir.

<leader> yw   "Yank window": Yank the current window

<leader> pw   "Paste window": Swap the current window with the yanked window
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.