Vim: Pencereyi sola / sağa hareket ettirmek mi?


216

Vim'de bir pencereyi sola veya sağa “taşımak” mümkün mü? Örneğin, <c-w> rveya benzeri <c-w> x, ancak yukarı / aşağı yerine sol / sağ?

Örneğin, bu düzenim varsa:

+---+---+---+
|   |   +---+
| A +---+---+
|   |   |   |
+---+---+---+

Bunu buna dönüştürmek istiyorum:

+---+---+---+
|   |   +---+
+---+ A +---+
|   |   |   |
+---+---+---+

Hangi ile yapmak zor / sinir bozucu <c-w> {H,J,K,L}.

Yanıtlar:


426

Ctrl w size aşağıdaki değiştiricilere izin veren "windows komut modunu" verir:

  • Ctrl w+ R- Pencereleri yukarı / sola döndürmek için.

  • Ctrl w+ r- Pencereleri aşağı / sağa döndürmek için.

Bir pencerenin konumunu değiştirmek için gezinme tuşlarıyla "windows komut modunu" da kullanabilirsiniz:

  • Ctrl w+ L- Geçerli pencereyi "en sağa" taşı

  • Ctrl w+ H- Geçerli pencereyi "en sola" hareket ettir

  • Ctrl w+ J- Geçerli pencereyi "çok alta"

  • Ctrl w+ K- Geçerli pencereyi "en üste" taşı

:help window-movingDaha fazla bilgi için göz atın


2
<c-w> rsadece dikey olarak döner.
David Wolever

10
@David Wolever, bu durumda büyük harfleri kullanmanız gerekir, örneğin: Ctrl-W + Shift-L, örneğin. Bence aradığınız şey bu olabilir.
Ricardo Valeriano

@David - bunu test ettim ve <cw> r benim için yatay olarak çalıştı.
ostler.c

3
@ ostler.c dikey bir bölme oluşturur, ardından sütunlardan birinde yatay bir bölme oluşturur. Şimdi <cw> r tuşunu kullanın ve sadece iki pencereyi bir dikey bölme içinde çevirir.
Chev

1
@ nn0p hayır, pencereleri hareket ettiriyorlar. <cw> h imleci sola doğru bir sonraki pencereye, <cw> H ise geçerli pencereyi (imleçle birlikte) en sola hareket ettirir.
MarSoft

60

Bu benim için en yararlı olanıdır (ve muhtemelen sorunun doğru cevabıdır):

  • Ctrl W+ xVEYA Ctrl W+ Ctrl x- Geçerli odaklanmış pencereyi en yakın pencere sağa döndürür.

bölmelerin ortasında olduğunuzda ve sağdaki ile değiştirmek istediğinizde çok kullanışlıdır. Bunun için teşekkürler!
Daniel Andrei Mincă

8

Pencerenin kendisini mi yoksa sadece imleç konumunuzu mu taşımak istiyorsunuz?

Sonraki dönen veya zaten bahsedildiği gibi bisiklet için, bu pencere kendisi taşımak mümkün olmaktadır kadar sırasıyla, sağ, üst, alt sol veya:

^W K
^W J
^W H
^W L

Bir pencereyi bir yere sağa taşımak için varsayılan yerleşik bir yol olduğunu sanmıyorum.


1
Pencereleri hareket ettirmek istiyorum, imleci değil.
David Wolever

1
O zaman bu vim pencere komutları ile gidebilirsiniz kadarıyla, eğer bu sizin için yararlı olsaydı lütfen çözüm olarak işaretleyin :-)
Bitterzoet

2
Eger yapabilseydim @Bitterzoet'in yorumunu indirebilirim. Yukarıdaki yanıtlara bakın
Nathan

1

Gerçekten vim standart anahtar haritalar ile bunu yapamaz gibi görünüyor. Belgeler, ^ WK, J, H ve L komutlarının bölünmeyi oluşturarak ve şimdi konumunda arabelleği açarak çalıştığını söylüyor, bu nedenle aynı işlevi yazdım: Arabelleği gizle, sola git, böl ve sonra orijinal arabelleği aç:

" Rotate a window horizontally to the left
function! RotateLeft()
    let l:curbuf = bufnr('%')
    hide
    wincmd h
    split
    exe 'buf' l:curbuf
endfunc

" Rotate a window horizontally to the right
function! RotateRight()
    let l:curbuf = bufnr('%')
    hide
    wincmd l
    split
    exe 'buf' l:curbuf
endfunc

-6
  • ctrl + h imleci bir sonraki pencereye götür (sağ)

  • ctrl + l imleci bir önceki pencereye taşı (sol)

Daha fazla bilgi için lütfen bakınız: :help window-moving


3
Doğru değil. Ctrl+h/lpencere navigasyonu için standart bağlantılar değildir (tabii ki bunlar yapılandırılabilir ve bazı eklentiler tarafından sunulur). Ve bu zaten asıl soruya cevap vermiyor.
MarSoft
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.