Como altero a largura e a altura da divisão atual?

111

Estou trabalhando em buffers de divisão (usando ^ w + v, ^ w + s), mas às vezes eu gostaria de ampliar uma divisão atual ou alterar sua altura. Como posso conseguir isso?

Nebril
fonte

Respostas:

158

Existem vários comandos de janela que permitem fazer isso:

  • Ctrl+W +/-: aumentar / diminuir altura (ex. 20<C-w>+)
  • Ctrl+W >/<: aumentar / diminuir largura (ex. 30<C-w><)
  • Ctrl+W _: definir altura (ex. 50<C-w>_)
  • Ctrl+W |: definir largura (ex. 50<C-w>|)
  • Ctrl+W =: igualar a largura e a altura de todas as janelas

Veja também: :help CTRL-W

Maçaneta
fonte
19
Também vale a pena notar que as duas primeiras opções podem levar uma contagem a ser redimensionada em mais de uma linha / coluna por vez.
Rico
4
Pode também ser interessante notar que as opções 3 e 4 pode tomar nenhuma contagem para redimensionar ao máximo altura / largura.
Michael
2
No meu sistema, é :help CTRL-We não:help CTRL_W
Alexej Magura
no windows, Cygwin, vim: quando você vimdiff -o bigfile1.bash bigfile2.bash:: ctrl-w =abre uma terceira janela do MiniBufExplorer na parte superior (e as três janelas agora têm o mesmo tamanho) e, fechando essa, a janela do primeiro arquivo .bash é 2 vezes maior que o segundo arquivo .bash janela. A mesma operação com 2 arquivos .vim fornece os mesmos resultados. :( Mesmo comvim -o
Olivier Dulac 25/10
Pedindo atalho para as duas primeiras opções vi.stackexchange.com/questions/16786/…
KcFnMi
43

Você também pode usar os resizecomandos:

  • :resize [+-]N - redimensione uma divisão horizontal, aumentando ou diminuindo a altura em N caracteres.
  • :vertical resize [+-]N - redimensione uma divisão vertical, aumentando ou diminuindo a altura em N caracteres.
  • :resize N - redimensione uma divisão horizontal, definindo a altura para N caracteres.
  • :vertical resize N - redimensione uma divisão vertical, configurando a largura para N caracteres.

Estes são equivalentes aos Ctrlwcomandos. Veja :help window-resize.

muru
fonte
29

Essa é uma das poucas razões pelas quais eu gosto de usar o modo mouse do vim.

Se você usa a versão da GUI ou o seu terminal suporta o envio de eventos de arrasto (como xterm ou rxvt-unicode), você pode clicar na linha de divisão e arrastar para redimensionar a janela exatamente onde deseja, sem muito trabalho de palpite usando o ctrl -w mais, menos, menos, combinações maiores.

Nas versões de terminal, é necessário definir o modo do mouse corretamente para que isso funcione

:set mouse=n

(Eu uso 'n', mas 'a' também funciona)

e você precisa definir o tipo de mouse tty

:set ttymouse=xterm2

Muitas pessoas dizem que é desperdiçado muito tempo usando o mouse (principalmente devido ao tempo necessário para mover sua mão do teclado para o mouse e para trás), mas acho que, nesse caso, o tempo economizado por ter feedback imediato ao ajustar o tamanho da janela e a rapidez do redimensionamento (continue movendo o mouse em vez de digitar outra sequência de teclas) supera o atraso da mão cheia.

John O'M.
fonte
4
Eu não poderia concordar mais, encontrei no Gnome-terminal :set mouse=né suficiente, mas para ativar quando o tmux :set ttymouse=xterm2é necessário.
the_velour_fog
11
Absolutamente verdade, eu amo teclado, mas esse tipo de coisa é melhor com o mouse.
calbertts
Uau, obrigado por trazer isso à minha atenção!
Charlie Gorichanaz 30/07/19
Concordo totalmente com ", mas acho que, nesse caso, o tempo economizado com feedback imediato ao ajustar o tamanho da janela e a rapidez do redimensionamento (continue movendo o mouse em vez de digitar outra sequência de teclas) superam o atraso da mão cheia. " .
Nawaz
4

Parece que ninguém foi mencionado z{nr}<CR>.

Se você :h ^w_, verá z{nr}<CR>logo abaixo, que têm o mesmo efeito que CTRL-W_.

Se você não precisa z=de verificação ortográfica e adicionado abaixo a .vimrc,

" vertical resize, z0<CR> minimize, z= equalize, z99<CR> maximize.
nnoremap z= <C-w>=

Então, para alterar a altura da janela:

  • z0<CR> para minimizar a altura da janela atual
  • z99<CR> maximizar a altura da janela atual
  • z= para torná-los todos iguais
qeatzy
fonte
2
esse uso de zé um pouco pouco intuitivo. Acho que devemos nos ater aos C-Wmapeamentos. É bom saber o que há lá fora.
Klaus
4

Redimensionar divisões mais rapidamente: http://vim.wikia.com/wiki/Resize_splits_more_quickly

Você pode usar o :resizecomando ou seu atalho :respara alterar a altura da janela. Para alterar a altura para 60 linhas, use: :resize 60

Você também pode alterar a altura em incrementos. Para alterar a altura em incrementos de 5, use: :res +5 :res -5

Você pode usar: redimensionamento vertical para alterar a largura da janela atual. Para alterar a largura para 80 colunas, use: :vertical resize 80

Você também pode alterar a largura em incrementos. Para alterar a largura em incrementos de 5, use: :vertical resize +5 :vertical resize -5

Galian
fonte
Isto é muito improvável que seja Resize splits more quickly, a menos que estes comandos são obrigados a keybindings, o que tem sido feito fora da caixa
Klaus
Não concordo totalmente com a afirmação de Enan. Eu gosto desta resposta imho
craft
0

Por alguma razão (provavelmente um plugin), o padrão C-w >(etc.) não funcionou no meu ~/.vimrc.

Essas .vimrcadições funcionaram ( Ctrl-Shift-Left... onde Left | Right= teclas de seta esquerda e direita, respectivamente.

" noremap <silent> <C-S-Left> :vertical resize +5<CR>
" noremap <silent> <C-S-Right> :vertical resize -5<CR>
noremap <silent> <C-S-Left> :vertical resize +1<CR>
noremap <silent> <C-S-Right> :vertical resize -1<CR>
Victoria Stuart
fonte