
5 minute read
9. Ventanas
Capítulo 9
Ventanas
Advertisement
En Vim podemos dividir la pantalla en diferentes zonas llamadas ventanas de tal modo que en cada una de ellas se edite un fichero distinto, o se muestren dos partes diferentes de un mismo fichero. Asimismo en ocasiones el mismo Vim, al ejecutar algunos comandos, genera ventanas adicionales. Por ejemplo cuando se ejecuta el comando «:help». En esta sección se verá como gestionar esas distintas ventanas.
9.1. Crear ventanas
9.1.1. Comandos expresos de creación de ventanas
Podemos crear ventanas horizontales o verticales. Para crear ventanas horizontales el comando es «:split», y para crearlas verticales «:vsplit»
Ejecutando estos comandos sin ningún argumento, en las ventanas recién creadas se seguirá mostrando el mismo buffer, pero en cada una de ellas podremos tener a la vista una parte distinta de él. Ahora bien, si a estos comandos les damos como argumento el nombre de un fichero, en la nueva ventana se cargará dicho fichero.
Para crear una ventana nueva asociada a un buffer también nuevo (es decir: vacío y no vinculado a ningún fichero) los comandos son «:new» para crear una ventana horizontal de ese tipo, y «:vnew» o «:vertical new» para hacerlo en una ventana vertical.
9.1.2. Creación de ventanas como consecuencia adicional de ciertos comandos
Una forma rápida de asignar una ventana distinta a cada uno de los ficheros en edición (para el caso de que se haya llamado a Vim con una lista de ficheros), es el comando «:all», o, muy parecido, el comando «:unhide» que abre una ventana para cada fichero oculto. Este comando admite un argumento que limita el número
80
Capítulo 9 Ventanas
de ventanas que se podrán abrir. Por ejemplo «:unhide 4» no abrirá más de cuatro ventanas. Asimismo el comando «:ball» abre una ventana distinta para cada uno de los buffers de la lista de buffers.
Asimismo el comando «CTRL-W CTRL-I» crea una ventana en la que se contiene el mismo buffer que en la ventana actual, y en la nueva ventana realiza una búsqueda de la palabra bajo el cursor, lo que es un modo cómodo de realizar una búsqueda sin perder de vista el punto en el que nos encontrábamos.
9.2. Circular entre las ventanas y cambiarlas de posición
Para cambiar el cursor de una ventana a otra hay varios procedimientos. El más básico es pulsar «CTRL-W w» o «CTRL-W CTRL-W» (en modo normal). La única diferencia entre ambos comandos es que en el primero hay que pulsar con cierta rapidez la segunda “w”, y en el segundo podemos dejar pasar el tiempo que queramos entre los dos golpes de teclado de que consta el comando.
El inconveniente de este comando es que circula por las ventanas en un orden prefijado. Para ir directamente a una ventana concreta hay que usar uno de los siguientes comandos:
CTRL-W h Va a la ventana que esté a la izquierda de la actual.
CTRL-W j Va a la ventana que esté bajo la ventana actual.
CTRL-W k Va a la ventana que esté sobre la ventana actual.
CTRL-W l Va a la ventana que esté a la derecha de la ventana actual.
CTRL-W t Va a la primera ventana.
CTRL-W b Va a la última ventana.
Se verá que las primeras cuatro combinaciones se corresponden con los comandos para el movimiento básico del cursor, y de hecho también funciona CTRL-W seguido de un movimiento de flecha del cursor. En los dos últimos la noción de primera y última ventana depende del orden en el que fueron creadas.
Por otra parte los mismos comandos de movimiento del cursor “hjkl”, precedidos de “CTRL-W” y con letras mayúsculas, producen el efecto de desplazar la ventana. Por ejemplo «CTRL-W K» hace que la ventana actual se coloque en la posición en la que antes estaba la ventana superior, la cual pasará a ocupar la posición que antes era ocupada por la ventana que se ha movido.
Capítulo 9 Ventanas
9.3. Ajustar el tamaño de las ventanas
Por defecto al crear una ventana, la ventana desde la que se ejecuta el comando se divide en dos partes exactamente iguales. Podemos no obstante facilitar al comando de creación de la ventana un argumento numérico que indique el número de líneas o columnas de la nueva ventana. Por ejemplo: el comando «10split» dividirá la ventana actual en dos, asignando a la nueva ventana un tamaño de 10 líneas.
Una vez creada la ventana podemos aumentarle la altura (el número de líneas) con la secuencia «CTRL-W +» y reducírsela con «CTRL-W -». Cada vez que se ejecuta el comando la ventana crecerá o decrecerá en una línea. Pero también podemos usar un prefijo numérico para provocar cambios de tamaño más rápidos, y, asimismo, podemos indicar directamente el número de líneas que deseamos asignar a la ventana mediante el comando «{altura}CTRL-W _». Este mismo comando sin indicación de tamaño hará a la ventana tan grande como sea posible.
9.4. Cerrar ventanas
El comando «:close» cierra la ventana activa (aquella sobre la que está el cursor, y el comando «:only» cierra todas las ventanas salvo la ventana activa; «CTRL-W o» produce el mismo resultado.
En realidad cerrar una ventana donde se está editando un buffer es muy parecido a terminar la ejecución de Vim: si el buffer ha sido modificado y se cierra la ventana se perderán los cambios, por lo que Vim solicita que se aclare explícitamente qué se quiere hacer. Y de hecho aquí también funcionan los comandos que en general funcionan para terminar Vim:
:q Cerrar ventana (sólo si no se ha modificado el buffer o, aunque se haya modificado, el mismo buffer se está mostrando en otras ventanas).
:q! Cerrar sin guardar los cambios.
Z! Cerrar sin guardar los cambios.
:wq Guardar los cambios y cerrar.
ZZ Guardar los cambios y cerrar.
Si queremos ejecutar estos comandos (los tres primeros), no para la ventana activa, sino para todas las ventanas, podemos hacerlo simplemente añadiendo “all” detrás de la “q” del comando. Así «:qall» significa cerrar todas las ventanas, Y «:wqall» y «:qall! » significa, respectivamente, guardar y cerrar, o descartar cambios y cerrar todas las ventanas. Estos comandos provocan el efecto de terminar la ejecución de Vim.
Capítulo 9 Ventanas
Otro comando que afecta globalmente a todas las ventanas es «:wall» que guarda los cambios en todas las ventanas.