Быстрый переход от вертикального разделения к горизонтальному в Vim



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



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

610   8  

8 ответов:

список рассылки Vim говорит (переформатирован для лучшей читабельности):

изменить два вертикальное разделение окна для горизонтального разделения

Ctrl - wtCtrl - wK

горизонтально вертикально:

Ctrl - wt Ctrl - wH

объяснениями:

Ctrl - wt делает первое окно (topleft) текущим Ctrl - wK перемещает текущее окно на полную ширину в самом верху Ctrl - wH перемещает текущее окно в полный рост на расстоянии слева

обратите внимание, что t-нижний регистр, а K и H-верхний.

кроме того, только с двумя окнами, похоже, вы можете отказаться от Ctrl - wt часть потому что если вы уже находитесь в одном из двух окон, какой смысл делать его текущим?

^w за ним следует capital H,J,K или L переместит текущее окно в дальнее left,bottom,top или right соответственно, как обычная навигация курсора.

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

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

(переключиться в горизонтальное положение)

:windo wincmd K

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

:windo wincmd H

это эффективно собирается в каждом окне по отдельности и с помощью ^WK или ^WH.

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

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

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

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

: помогите открыть окно

например:

Ctrl - Ws
Ctrl - Wo
Ctrl - Wv
Ctrl - Wo
Ctrl - W s
...

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

" 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

Edit: использовать Ctrl - wr поменять два окна, если они не в порядке.

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

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>

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

Ctrl+ W, следовал по Shift+H или Shift+L


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

Ctrl+ W, следовал по Shift+K или Shift+J

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

Comments

    Ничего не найдено.