Чтобы переключиться с вертикального разделения на горизонтальное, быстро разбить в Vim

Как вы можете переключать текущие окна с горизонтального разделения на вертикальное разделение и наоборот в Vim?

Я сделал это мгновение назад случайно, но я больше не могу найти ключ.

Ответ 1

Список рассылки 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, потому что, если вы уже находитесь в одном из двух окон, какой смысл делать его текущим?

Ответ 2

Ctrl - w, за которым следуют H, J, K или L (заглавная), переместит текущее окно в дальний angular left, bottom, top или right соответственно, как нормальная навигация курсора.

Эквиваленты в нижнем регистре перемещают фокус вместо перемещения окна.

Ответ 3

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

(переход в горизонтальное положение)

:windo wincmd K

(переключиться на вертикальный)

:windo wincmd H

Он эффективно подходит к каждому окну индивидуально и использует ^W K или ^W H.

Ответ 4

Следующие ex-команды будут (повторно) разделять любое количество окон:

  • Чтобы разбить по вертикали (например, сделать вертикальные разделители между окнами), введите :vertical ball
  • Чтобы разбить по горизонтали, введите :ball

Если есть скрытые буферы, выдача этих команд также сделает видимыми скрытые буферы.

Ответ 5

В VIM взгляните на следующее, чтобы увидеть различные варианты того, что вы могли сделать:

: помощь в открытии окна

Например:

Ctrl - W s
Ctrl - W o
Ctrl - W v
Ctrl - W o
Ctrl - W s
...

Ответ 6

  Разделение по горизонтали и вертикали

Ctrl+W for window command, followed by Shift+H or Shift+L


Вертикальное разделение на горизонтальное

Ctrl+W for window command, followed by Shift+K or Shift+J

Оба решения применяются, когда существуют только два окна.

Ответ 7

Следуя подсказке Марка Рушакова выше, вот мое сопоставление:

" 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 для замены двух окон, если они не в порядке.

Ответ 8

Вдохновленный Стив ответом, я написал простую функцию, которая переключает между вертикальными и горизонтальными разбиениями для всех окон на текущей вкладке. Вы можете привязать его к сопоставлению, как в последней строке ниже.

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>