Vim: Przesuń okno w lewo / w prawo?

W Vimie, czy możliwe jest" przesunięcie " okna w lewo lub w prawo? Np. podobne do <c-w> r lub <c-w> x, ale lewo / prawo zamiast góra / dół?

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

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

Chciałbym zamienić to w to:

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

Co jest trudne/irytujące do zrobienia z <c-w> {H,J,K,L}.

 226
vim
Author: David Wolever, 2010-12-29

5 answers

Ctrl w daje "tryb poleceń systemu windows", pozwalając na następujące modyfikatory:

  • Ctrl w + R - obracanie okien w górę/w lewo.

  • Ctrl w + r - obracanie okien w dół/w prawo.

Możesz również użyć" trybu poleceń systemu windows " z klawiszami nawigacyjnymi, aby zmienić pozycję okna:

  • Ctrl w + L - przesunięcie bieżącego okna w "prawo"

  • Ctrl w + H - przesunięcie bieżącego okna w "daleko w lewo"

  • Ctrl w + J - przesunięcie bieżącego okna na "bardzo dolne"

  • Ctrl w + K - Przenieś bieżące okno do "bardzo górnej"

Zobacz :help window-moving więcej informacje

 445
Author: Ricardo Valeriano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-28 19:14:41

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

  • Ctrl W + x lub Ctrl W + Ctrl x - obraca aktualnie ustawione okno z najbliższym oknem po prawej stronie.
 62
Author: fabiomcosta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-26 05:49:28

Chcesz przesunąć samo okno czy tylko pozycję kursora?

Obok obracania lub jazdy na rowerze, jak już wspomniałeś, możliwe jest tylko przesunięcie samego okna do Daleko u góry, u dołu, w lewo lub w prawo, odpowiednio:

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

Myślę, że nie ma domyślnego wbudowanego sposobu na przeniesienie okna w jedno miejsce w prawo.

 9
Author: Bitterzoet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-30 09:59:47

Wydaje się, że vim nie może tego zrobić z kluczowymi mapami standardów. Dokumentacja mówi, że polecenia ^w K, J, H I L działają poprzez utworzenie dzielenia i otwarcie bufora w pozycji teraz, więc napisałem do tego samego funkcję: Ukryj bufor, przesuń 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
 1
Author: W Klink,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-23 15:59:14
  • ctrl + h przesuń kursor do następnego okna (po prawej)

  • ctrl + l przesuń kursor do poprzedniego okna (po lewej)

Więcej informacji można znaleźć na stronie: :help window-moving

 -6
Author: xautjzd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-10 08:51:00