Чтобы изменить два вертикально разделенных окна на горизонтальное разделение
Ctrl- wtCtrl-wK
По горизонтали к вертикали:
Ctrl- wtCtrl-wH
Пояснения:
Ctrl- wt делает первое (topleft) окно текущим
Ctrl- wK перемещает текущее окно на полную ширину в самом верху
Ctrl- wH перемещает текущее окно на полную высоту слева
Обратите внимание, что t строчные, а K и H прописные.
Кроме того , только два окна, кажется , что вы можете уронить Ctrl- wtотчасти потому , что , если вы уже в одном из только два окна, в чем смысл сделать его текущим?
Так что, если у вас два окна разделены по горизонтали, и вы находитесь в нижнем окне, вы просто используете ^ WL.
слишком много php
7
.... Сила ... Мой vim-fu сегодня удвоился, спасибо. Есть масса интересных ^ ^ команд (b, w и т. Д.)
Алекс Харт
Было бы хорошо, если бы это работало при использовании плагина NERDTree :-)
Ино
3
@Eno отлично работает для меня. Просто закройте панель NERDTree, прежде чем «вращать» сплит, затем снова откройте ее. : NERDTreeToggle (для удобства он сопоставлен с функциональной клавишей).
Ламбарт
2
Я добавил некоторые сопоставления лидеров в мою конфигурацию vim: :nmap <leader>th <C-w>t<C-w>Hи:nmap <leader>tk <C-w>t<C-w>K
Ian Marcinkowski,
324
Ctrl- а wзатем H, J, Kили L(капитала) будет переместить текущее окно в далекую left, bottom, topили , rightсоответственно , как нормальный курсор навигации.
Эквиваленты в нижнем регистре перемещают фокус вместо перемещения окна.
это намного лучше, так как пользователи используют hjkl для перемещения между буферами.
Афшин Мехрабани
30
Принятый ответ хороший, но для меня этот ответ легче запомнить. Спасибо!
Джон Картер
Лучше работает с nerdtree тоже.
arcseldon
Это работает для меня на macOS с помощью префикса Ctrl- w(я не знаю, ^означает ли это Ctrlв вашем примере).
Джованни Бенусси
@GiovanniBenussi да, я думаю, что ^значит Ctrl.
ma11hew28
47
Если у вас есть два или более окон, открытых горизонтально или вертикально, и вы хотите переключить их все в другую ориентацию, вы можете использовать следующее:
(переключиться в горизонтальное положение)
:windo wincmd K
(переключиться в вертикальное положение)
:windo wincmd H
Он эффективно подходит к каждому окну индивидуально и использует ^WKили ^WH.
Вдохновленный ответом Стива, я написал простую функцию, которая переключается между вертикальным и горизонтальным разделением для всех окон в текущей вкладке. Вы можете привязать его к отображению, как в последней строке ниже.
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>
Работает для меня еще лучше, если я заставлю его остаться в том же расколе, как и так, if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif и if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endifнадеюсь, что имеет смысл.
mjhoffmann
5
Следуя совету Марка Рушакова выше , вот мое отображение:
Ответы:
Список рассылки Vim говорит (переформатирован для лучшей читаемости):
Обратите внимание, что t строчные, а K и H прописные.
Кроме того , только два окна, кажется , что вы можете уронить Ctrl- w tотчасти потому , что , если вы уже в одном из только два окна, в чем смысл сделать его текущим?
источник
:nmap <leader>th <C-w>t<C-w>H
и:nmap <leader>tk <C-w>t<C-w>K
Ctrl- а wзатем H, J, Kили L(капитала) будет переместить текущее окно в далекую
left
,bottom
,top
или ,right
соответственно , как нормальный курсор навигации.Эквиваленты в нижнем регистре перемещают фокус вместо перемещения окна.
источник
Ctrl
-w
(я не знаю,^
означает ли этоCtrl
в вашем примере).^
значитCtrl
.Если у вас есть два или более окон, открытых горизонтально или вертикально, и вы хотите переключить их все в другую ориентацию, вы можете использовать следующее:
(переключиться в горизонтальное положение)
(переключиться в вертикальное положение)
Он эффективно подходит к каждому окну индивидуально и использует ^WKили ^WH.
источник
Следующие команды ex будут (повторно) разбивать любое количество окон:
:vertical ball
:ball
Если есть скрытые буферы, выполнение этих команд также сделает скрытые буферы видимыми.
источник
:vert[ical] ball
в док:vert ball
тоже так ок и короче.:ball
уменьшает 3 вертикальных окна до 2 горизонтальных, в то время как:vert ball
правильно отображает 3 горизонтальных окна на 3 вертикальных.В VIM взгляните на следующее, чтобы увидеть различные варианты того, что вы могли бы сделать:
: помочь открыть окно
Например:
Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...
источник
Оба решения применяются, когда существуют только два окна.
Открыть справку по вертикали по умолчанию
Добавьте обе эти строки в
.vimrc
::vert[ical] {cmd}
всегда выполняетcmd
в вертикально разделенном окне.источник
Вдохновленный ответом Стива, я написал простую функцию, которая переключается между вертикальным и горизонтальным разделением для всех окон в текущей вкладке. Вы можете привязать его к отображению, как в последней строке ниже.
источник
if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif
иif winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endif
надеюсь, что имеет смысл.Следуя совету Марка Рушакова выше , вот мое отображение:
Изменить: использовать Ctrl- w rчтобы поменять местами два окна, если они не в порядке.
источник