Как вы можете переключать текущие окна с горизонтального разделения на вертикальное разделение и наоборот в Vim?
Я сделал это мгновение назад случайно, но я больше не могу найти ключ.
Как вы можете переключать текущие окна с горизонтального разделения на вертикальное разделение и наоборот в Vim?
Я сделал это мгновение назад случайно, но я больше не могу найти ключ.
Список рассылки Vim сообщает (переформатирован для лучшей читабельности):
Поменять два вертикально разделенных окна горизонтально разделены
Ctrl-w t Ctrl-w K
От горизонтального до вертикального:
Ctrl-w t Ctrl-w H
Explanations:
Ctrl - w t делает первое (верхнее) окно текущим
Ctrl - w K перемещает текущее окно на полную ширину в самом верху
Ctrl - w H перемещает текущее окно на полную высоту в крайнем левом положении
Обратите внимание, что буква t в нижнем регистре, а буквы K и H прописные.
Кроме того, только с двумя окнами кажется, что вы можете отбросить часть Ctrl - w t, потому что, если вы уже находитесь в одном из двух окон, какой смысл делать его текущим?
Ctrl - w, за которым следуют H, J, K или L (заглавная), переместит текущее окно в дальний angular left
, bottom
, top
или right
соответственно, как нормальная навигация курсора.
Эквиваленты в нижнем регистре перемещают фокус вместо перемещения окна.
Если у вас есть два или более окна, открытые горизонтально или вертикально, и вы хотите переключить их все на другую ориентацию, вы можете использовать следующее:
(переход в горизонтальное положение)
:windo wincmd K
(переключиться на вертикальный)
:windo wincmd H
Он эффективно подходит к каждому окну индивидуально и использует ^W K или ^W H.
Следующие ex-команды будут (повторно) разделять любое количество окон:
:vertical ball
:ball
Если есть скрытые буферы, выдача этих команд также сделает видимыми скрытые буферы.
В VIM взгляните на следующее, чтобы увидеть различные варианты того, что вы могли сделать:
: помощь в открытии окна
Например:
Ctrl - W s
Ctrl - W o
Ctrl - W v
Ctrl - W o
Ctrl - W s
...
Разделение по горизонтали и вертикали
Ctrl+W for window command, followed by Shift+H or Shift+L
Вертикальное разделение на горизонтальное
Ctrl+W for window command, followed by Shift+K or Shift+J
Оба решения применяются, когда существуют только два окна.
Следуя подсказке Марка Рушакова выше, вот мое сопоставление:
" vertical to horizontal ( | -> -- )
noremap <c-w>- <c-w>t<c-w>K
" horizontal to vertical ( -- -> | )
noremap <c-w>\| <c-w>t<c-w>H
noremap <c-w>\ <c-w>t<c-w>H
noremap <c-w>/ <c-w>t<c-w>H
Изменить: используйте Ctrl - w r для замены двух окон, если они не в порядке.
Вдохновленный Стив ответом, я написал простую функцию, которая переключает между вертикальными и горизонтальными разбиениями для всех окон на текущей вкладке. Вы можете привязать его к сопоставлению, как в последней строке ниже.
function! ToggleWindowHorizontalVerticalSplit()
if !exists('t:splitType')
let t:splitType = 'vertical'
endif
if t:splitType == 'vertical' " is vertical switch to horizontal
windo wincmd K
let t:splitType = 'horizontal'
else " is horizontal switch to vertical
windo wincmd H
let t:splitType = 'vertical'
endif
endfunction
nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>