Vim: Переместить окно влево / вправо? - PullRequest
187 голосов
/ 29 декабря 2010

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

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

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

Я бы хотел превратить это в следующее:

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

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

Ответы [ 5 ]

384 голосов
/ 31 декабря 2010

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 для получения дополнительной информации

46 голосов
/ 26 марта 2014

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

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

Вы хотите переместить само окно или только положение курсора?

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

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

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

0 голосов
/ 23 апреля 2018

Похоже, что 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
0 голосов
/ 10 августа 2014
  • ctrl + h переместить курсор в следующее окно (справа)

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...