Vim: Переместить окно влево / вправо?


216

В Vim возможно ли «переместить» окно влево или вправо? Например, похоже на <c-w> rили <c-w> x, но влево / вправо, а не вверх / вниз?

Например, если у меня есть этот макет:

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

Я хотел бы превратить это в это:

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

Что трудно / раздражает делать <c-w> {H,J,K,L}.

Ответы:


427

Ctrl w предоставляет вам «режим команд Windows», позволяющий использовать следующие модификаторы:

  • Ctrl w+ R- Для поворота окна вверх / влево.

  • Ctrl w+ r- Для поворота окна вниз / вправо.

Вы также можете использовать «режим команд Windows» с клавишами навигации, чтобы изменить положение окна:

  • Ctrl w+ L- переместить текущее окно в крайнее правое положение

  • Ctrl w+ H- переместить текущее окно в «крайнее левое положение»

  • Ctrl w+ J- переместить текущее окно в «самое нижнее»

  • Ctrl w+ K- переместить текущее окно в «самый верх»

Проверьте :help window-movingдля получения дополнительной информации


2
<c-w> rвращается только вертикально
Дэвид Волевер

10
@ Дэвид Вулевер, в этом случае вам нужно использовать буквы в верхнем регистре, например, Ctrl-W + Shift-L. Я думаю, что это может быть то, что вы ищете.
Рикардо Валериано

@David - только что протестировал и <cw> r работал горизонтально для меня.
ostler.c

3
@ ostler.c создайте вертикальное разделение, затем создайте горизонтальное разделение внутри одного из столбцов. Теперь используйте <cw> r, и он будет циклически повторять только два окна в пределах одного вертикального разделения.
Chev

1
@ nn0p нет, они перемещают окна. <cw> h переместит курсор в следующее окно слева, а <cw> H переместит текущее окно (вместе с курсором) в крайнее левое положение.
MarSoft

60

Это самый полезный для меня (и, вероятно, правильный ответ на вопрос):

  • Ctrl W+ xИЛИ Ctrl W+ Ctrl x- Поворот текущего сфокусированного окна с ближайшим окном справа.

очень полезно, когда вы находитесь в середине панели и хотите поменять местами справа. Спасибо за это!
Даниэль Андрей Mincă

8

Вы хотите переместить само окно или только вашу позицию курсора?

Рядом с вращением или циклическим перемещением, как вы уже упоминали, можно только переместить само окно в крайнюю верхнюю, нижнюю, левую или правую сторону , соответственно:

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

Я не думаю, что по умолчанию есть встроенный способ перемещения окна на одно место вправо.


1
Я хочу перемещать окна, а не курсор.
Дэвид Волевер

1
Тогда это настолько далеко, насколько вы можете использовать команды окна vim, если это было вам полезно, отметьте это как решение :-)
Bitterzoet

2
Я бы понизил комментарий @Bitterzoet, если бы мог. См. Выше ответы
Натан

1

Похоже, что vim не может сделать это с картами ключей стандартов. В документации сказано, что команды ^ WK, J, H и L работают, создавая разбиение и открывая буфер в текущей позиции, поэтому я написал для нее то же самое: скрыть буфер, переместиться влево, разделить, а затем откройте исходный буфер:

" 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 переместить курсор в следующее окно (справа)

  • ctrl + l переместить курсор в предыдущее окно (слева)

Для получения дополнительной информации, пожалуйста, обратитесь: :help window-moving


3
Не верно. Ctrl+h/lне являются стандартными привязками для оконной навигации (хотя они, конечно, могут быть настроены и предлагаются некоторыми плагинами). И это не отвечает на оригинальный вопрос в любом случае.
MarSoft
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.