Para alterar duas janelas divididas verticalmente para divididas horizontalmente
Ctrl- wtCtrl-wK
Horizontalmente para verticalmente:
Ctrl- wtCtrl-wH
Explicações:
Ctrl- wt atualiza a primeira janela (topleft)
Ctrl- wK move a janela atual para a largura total no topo
Ctrl- wH move a janela atual para a altura máxima na extrema esquerda
Observe que ot é minúsculo e K e H são maiúsculos.
Além disso, com apenas duas janelas, parece que você pode soltar a Ctrl- wtparte porque se você já está em um de apenas duas janelas, que é o ponto de torná-lo atual?
Portanto, se você tiver duas janelas divididas horizontalmente e estiver na janela inferior, basta usar ^ WL.
Php demais
7
.... O poder ... Meu vim-fu dobrou hoje, obrigado. Há uma tonelada de interessante ^ w comandos (b, w, etc)
Alex Hart
Seria bom se isso funcionou quando usando o plugin NERDTree :-)
Eno
3
@Eno Funciona bem para mim. Basta fechar o painel NERDTree antes de 'girar' as divisões e, em seguida, abrir novamente. : NERDTreeToggle (eu o mapeei para uma tecla de função por conveniência).
Lambart 26/03
2
Eu adicionei alguns mapeamentos de líderes à minha configuração do vim: :nmap <leader>th <C-w>t<C-w>He:nmap <leader>tk <C-w>t<C-w>K
Ian Marcinkowski 8/16
324
Ctrl- wseguido por H, J, Kou L(capital) irá mover a janela atual para o extremo left, bottom, topou right, respectivamente, como navegação normal cursor.
Os equivalentes em minúsculas movem o foco em vez de mover a janela.
Inspirado na resposta de Steve, escrevi uma função simples que alterna entre divisões verticais e horizontais para todas as janelas na guia atual. Você pode vinculá-lo ao mapeamento, como na última linha abaixo.
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>
Funciona ainda melhor para mim se forçá-lo a permanecer na mesma divisão if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif e if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endifespero que isso faça sentido.
mjhoffmann 5/01
5
Seguindo a dica de Mark Rushakoff acima , aqui está o meu mapeamento:
Respostas:
A lista de discussão do Vim diz (reformatada para melhor legibilidade):
Observe que ot é minúsculo e K e H são maiúsculos.
Além disso, com apenas duas janelas, parece que você pode soltar a Ctrl- w tparte porque se você já está em um de apenas duas janelas, que é o ponto de torná-lo atual?
fonte
:nmap <leader>th <C-w>t<C-w>H
e:nmap <leader>tk <C-w>t<C-w>K
Ctrl- wseguido por H, J, Kou L(capital) irá mover a janela atual para o extremo
left
,bottom
,top
ouright
, respectivamente, como navegação normal cursor.Os equivalentes em minúsculas movem o foco em vez de mover a janela.
fonte
Ctrl
-w
(não sei se isso^
significaCtrl
no seu exemplo).^
significaCtrl
.Quando você tem duas ou mais janelas abertas na horizontal ou na vertical e deseja alternar todas para a outra orientação, pode usar o seguinte:
(mudar para horizontal)
(mudar para vertical)
Ele efetivamente vai para cada janela individualmente e usa ^WKor ^WH.
fonte
Os seguintes comandos ex (re) dividirão qualquer número de janelas:
:vertical ball
:ball
Se houver buffers ocultos, a emissão desses comandos também tornará os buffers ocultos visíveis.
fonte
:vert[ical] ball
no doc:vert ball
também está ok e mais curto.:ball
reduz 3 janelas verticais para 2 janelas horizontais, enquanto:vert ball
mapeia corretamente 3 janelas horizontais para 3 janelas verticais.No VIM, observe o seguinte para ver diferentes alternativas para o que você pode ter feito:
: ajuda janela de abertura
Por exemplo:
Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...
fonte
Ambas as soluções se aplicam quando apenas duas janelas existem.
Abrir ajuda em uma divisão vertical por padrão
Adicione as duas linhas a
.vimrc
::vert[ical] {cmd}
sempre executa ocmd
em uma janela dividida verticalmente.fonte
Inspirado na resposta de Steve, escrevi uma função simples que alterna entre divisões verticais e horizontais para todas as janelas na guia atual. Você pode vinculá-lo ao mapeamento, como na última linha abaixo.
fonte
if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif
eif winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endif
espero que isso faça sentido.Seguindo a dica de Mark Rushakoff acima , aqui está o meu mapeamento:
Editar: use Ctrl- w rpara trocar duas janelas se elas não estiverem na boa ordem.
fonte