Vim: Przenieś okno w lewo / prawo?


215

Czy w Vimie można „przesunąć” okno w lewo lub w prawo? Np. Podobne <c-w> rlub <c-w> x, ale w lewo / w prawo zamiast w górę / w dół?

Na przykład, jeśli mam ten układ:

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

Chciałbym to przekształcić w to:

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

Co jest trudne / denerwujące <c-w> {H,J,K,L}.

Odpowiedzi:


425

Ctrl w daje „tryb poleceń systemu Windows”, umożliwiając następujące modyfikatory:

  • Ctrl w+ R- Aby obrócić okna w górę / w lewo.

  • Ctrl w+ r- Aby obrócić okna w dół / w prawo.

Możesz także użyć „trybu poleceń systemu Windows” z klawiszami nawigacyjnymi, aby zmienić pozycję okna:

  • Ctrl w+ L- Przenieś bieżące okno do „skrajnie prawej”

  • Ctrl w+ H- Przenieś bieżące okno do „daleko w lewo”

  • Ctrl w+ J- Przenieś bieżące okno do „bardzo dna”

  • Ctrl w+ K- Przenieś bieżące okno na „samą górę”

Sprawdź, :help window-movingaby uzyskać więcej informacji


2
<c-w> robraca się tylko pionowo.
David Wolever

10
@David Wolever, w tym przypadku musisz użyć wielkich liter, na przykład: Ctrl-W + Shift-L. Myślę, że to może być to, czego szukasz.
Ricardo Valeriano,

@David - właśnie to przetestowałem i <cw> r pracowało dla mnie poziomo.
ostler.c

3
@ ostler.c utwórz podział pionowy, a następnie utwórz podział poziomy w jednej z kolumn. Teraz użyj <cw> r i cyklicznie tylko dwa okna w ramach jednego podziału pionowego.
Chev

1
@ nn0p nie, oni przesuwają okna. <cw> h przesuwa kursor do następnego okna w lewo, natomiast <cw> H przesuwa bieżące okno (wraz z kursorem) w skrajną lewą stronę.
MarSoft,

59

Ten jest dla mnie najbardziej przydatny (i prawdopodobnie jest właściwą odpowiedzią na pytanie):

  • Ctrl W+ xLUB Ctrl W+ Ctrl x- Obraca aktualnie zaznaczone okno z najbliższym oknem po prawej stronie.

bardzo przydatne, gdy jesteś na środku szyb i chcesz zamienić na ten z prawej. Dzięki za ten!
Daniel Andrei Mincă

8

Czy chcesz przesunąć okno, czy tylko pozycję kursora?

Oprócz obracania lub jazdy na rowerze, jak już wspomniano, możliwe jest jedynie przesuwanie samego okna do skrajnie górnej, dolnej, lewej lub prawej strony, odpowiednio:

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

Nie sądzę, że istnieje domyślny wbudowany sposób na przesuwanie okna o jedno miejsce w prawo.


1
Chcę przesunąć okna, a nie kursor.
David Wolever

1
Zatem jest to tak daleko, jak to możliwe, dzięki poleceniom okna vim, jeśli było to dla ciebie przydatne, zaznacz to jako rozwiązanie :-)
Bitterzoet

2
Przydałbym się komentarzowi @Bitterzoet, gdybym mógł. Zobacz powyższe odpowiedzi
Nathan

1

Wygląda na to, że vim nie może tego zrobić za pomocą standardowych map kluczy. Dokumentacja mówi, że polecenia ^ WK, J, H i L działają poprzez utworzenie podziału i otwarcie bufora w pozycji teraz, więc napisałem funkcję do tego samego: Ukryj bufor, przejdź w lewo, podziel, a następnie otwórz oryginalny bufor:

" 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 przesuń kursor do następnego okna (w prawo)

  • ctrl + l przenieś kursor do poprzedniego okna (po lewej)

więcej informacji można znaleźć w: :help window-moving


3
Niepoprawne. Ctrl+h/lnie są standardowymi powiązaniami do nawigacji w oknie (chociaż można je oczywiście skonfigurować i są oferowane przez niektóre wtyczki). I to i tak nie odpowiada na pierwotne pytanie.
MarSoft,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.