Vim: Переместить окно влево / вправо?
В Vim можно ли "переместить" окно влево или вправо? Например, похоже на <c-w> r
или же <c-w> x
, но влево / вправо вместо вверх / вниз?
Например, если у меня есть этот макет:
+---+---+---+
| | +---+
| A +---+---+
| | | |
+---+---+---+
Я хотел бы превратить это в это:
+---+---+---+
| | +---+
+---+ A +---+
| | | |
+---+---+---+
Что трудно / раздражает делать с <c-w> {H,J,K,L}
,
5 ответов
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
для дополнительной информации
Это самый полезный для меня (и, вероятно, правильный ответ на вопрос):
- Ctrl W + x ИЛИ Ctrl W + Ctrl x - Поворот текущего сфокусированного окна с ближайшим окном вправо.
Вы хотите переместить само окно или только вашу позицию курсора?
Рядом с вращением или циклическим циклом, как вы уже упоминали, можно только переместить само окно в крайнюю верхнюю, нижнюю, левую или правую сторону, соответственно:
^W K
^W J
^W H
^W L
Я не думаю, что есть встроенный способ перемещения окна на одно место вправо.
Похоже, что vim не может сделать это с помощью стандартных карт ключей. Документация гласит, что команды ^W K, 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
ctrl + h
переместить курсор в следующее окно (справа)ctrl + l
переместить курсор в предыдущее окно (слева)
Для получения дополнительной информации, пожалуйста, обратитесь: :help window-moving