¿Cómo cambio el ancho y la altura de la división actual?


112

Estoy trabajando en búferes de división (usando ^ w + v, ^ w + s), pero a veces me gustaría ampliar una división actual o cambiar su altura. ¿Cómo puedo lograr eso?

Respuestas:


159

Hay varios comandos de ventana que le permiten hacer esto:

  • Ctrl+W +/-: aumentar / disminuir altura (ej. 20<C-w>+)
  • Ctrl+W >/<: aumentar / disminuir el ancho (ej. 30<C-w><)
  • Ctrl+W _: establecer altura (ej. 50<C-w>_)
  • Ctrl+W |: establecer ancho (ej. 50<C-w>|)
  • Ctrl+W =: iguala el ancho y la altura de todas las ventanas

Ver también: :help CTRL-W


19
También vale la pena señalar que las dos primeras opciones pueden tomar un recuento para cambiar el tamaño en más de una línea / columna a la vez.
Rico

44
También podría valer la pena señalar que las opciones 3 y 4 pueden tomar ningún recuento para cambiar el tamaño de la altura / anchura máxima.
Michael

2
En mi sistema, es :help CTRL-Wy no:help CTRL_W
Alexej Magura

en Windows, Cygwin, vim: cuando usted vimdiff -o bigfile1.bash bigfile2.bash:: ctrl-w =abre una tercera ventana MiniBufExplorer en la parte superior (y las 3 ventanas ahora tienen el mismo tamaño), y al cerrarla, la primera ventana del archivo .bash es 2 veces más grande que el segundo archivo .bash ventana. La misma operación con 2 archivos .vim da los mismos resultados. :( Lo mismo convim -o
Olivier Dulac

Solicitar acceso directo para las dos primeras opciones vi.stackexchange.com/questions/16786/…
KcFnMi

44

También puedes usar los resizecomandos:

  • :resize [+-]N - Cambiar el tamaño de una división horizontal, aumentando o disminuyendo la altura en N caracteres.
  • :vertical resize [+-]N - Cambiar el tamaño de una división vertical, aumentando o disminuyendo la altura en N caracteres.
  • :resize N - Cambiar el tamaño de una división horizontal, estableciendo la altura a N caracteres.
  • :vertical resize N - Cambiar el tamaño de una división vertical, estableciendo el ancho a N caracteres.

Estos son equivalentes a los Ctrlwcomandos. Ver :help window-resize.



30

Esta es una de las pocas razones por las que me gusta usar el modo de mouse de vim.

Si usa la versión GUI, o su terminal admite el envío de eventos de arrastre (como xterm o rxvt-unicode), puede hacer clic en la línea dividida y arrastrar para cambiar el tamaño de la ventana exactamente donde lo desee, sin muchas conjeturas usando el ctrl -w combinaciones más, menos, menos, mayores.

En las versiones de terminal, debe configurar el modo del mouse correctamente para que esto funcione

:set mouse=n

(Uso 'n', pero 'a' también funciona)

y tienes que configurar el tipo de mouse tty

:set ttymouse=xterm2

Mucha gente dice que se desperdicia mucho tiempo usando el mouse (principalmente debido al tiempo que lleva mover la mano del teclado al mouse y viceversa), pero creo que, en este caso, el tiempo ahorrado por tener una respuesta inmediata mientras se ajusta el tamaño de la ventana y la rapidez de cambiar el tamaño (siga moviendo el mouse en lugar de escribir otra secuencia de teclas) supera el retraso de la mano de Moingmy.


44
No podría estar más de acuerdo, descubrí que en Gnome-terminal :set mouse=nes suficiente, pero para habilitar cuando :set ttymouse=xterm2se necesita tmux .
the_velour_fog

1
Absolutamente cierto, me encanta el teclado, pero este tipo de cosas son mejores con el mouse.
calbertts

¡Guau, gracias por llamar mi atención!
Charlie Gorichanaz

Totalmente de acuerdo con "pero encuentro que, en este caso, el tiempo ahorrado al recibir comentarios inmediatos mientras se ajusta el tamaño de la ventana y la rapidez del cambio de tamaño (seguir moviendo el mouse en lugar de escribir otra secuencia de teclas) supera el retraso de la mano de Moingmy. " .
Nawaz

5

Parece que nadie mencionó z{nr}<CR>.

Si es así :h ^w_, verá z{nr}<CR>justo debajo de él, que tienen el mismo efecto que CTRL-W_.

Si no necesita z=un corrector ortográfico, y se agrega a continuación a .vimrc,

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

Luego, para cambiar la altura de la ventana:

  • z0<CR> para minimizar la altura de la ventana actual
  • z99<CR> para maximizar la altura de la ventana actual
  • z= para hacerlos a todos iguales

2
Este uso de zes un poco intuitivo. Creo que deberíamos apegarnos a las C-Wasignaciones. Sin embargo, es bueno saber qué hay ahí fuera.
Klaus

5

Cambiar el tamaño de las divisiones más rápidamente: http://vim.wikia.com/wiki/Resize_splits_more_quickly

Puede usar el :resizecomando o su acceso directo :respara cambiar la altura de la ventana. Para cambiar la altura a 60 filas, use: :resize 60

También puede cambiar la altura en incrementos. Para cambiar la altura en incrementos de 5, use: :res +5 :res -5

Puede usar: cambiar el tamaño vertical para cambiar el ancho de la ventana actual. Para cambiar el ancho a 80 columnas, use: :vertical resize 80

También puede cambiar el ancho en incrementos. Para cambiar el ancho en incrementos de 5, use: :vertical resize +5 :vertical resize -5


Esto es muy poco probable que sea Resize splits more quickly, a menos que estos comandos están obligados a combinaciones de teclas, que se ha hecho fuera de la caja
klaus

No esté completamente de acuerdo con la declaración de Enan. Me gusta esta respuesta imho
craft

0

Por alguna razón (probablemente un complemento) el estándar C-w >(etc.) no funcionó en mi ~/.vimrc.

Estas .vimrcadiciones funcionaron ( Ctrl-Shift-Left... donde Left | Right= teclas de flecha izquierda y derecha, 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>