Buffers Tabs y Windows en Vim (Buffers, pestañas y ventanas en Vim)
Linux
Existe una marcada diferencia entre el flujo de trabajo de Vim y el resto de editores de código, dicha diferencia radica en que Vim trabaja con buffers, pestañas y ventanas lo que dota a este editor de una abstracción diferente a los demás. Veamos como es que Vim hace gestión de todo esto.
Buffer
En Vim todo comienza con los buffers, Vim hace un espacio en memoria por cada archivo de texto abierto, es decir por cada archivo se generará un buffer. Si por ejemplo desde la consola abrimos un par de archivos con Vim...
vim index.html main.ts
Al abrirse el editor vemos que unicamente nos abrió un archivo, esto es porque el otro esta en otro buffer, para ver los buffers actuales en el editor usamos cualquiera de los siguientes comando desde el modo de comandos en Vim...
:buffers
:ls
:list
Para moverse entre los buffers actuales siguiente y anterior...
:bnext
:bprev
Moverse a buffer por nombre...
:buffer "nombre.archivo"
Donde en el campo no será necesario indicar todo el nombre (del archivo) bastará con ingresar las primeras letras y Vim auto completará el nombre, pero previamente habrá que listar todos los buffers para saber su nombre en caso de no saberlo.
Es importante tener en mente que aunque no este actualmente visible un archivo, es posible que Vim aún lo tenga en memoria, es aquí cuando el listar los buffers actuales toma mayor importancia, tener en cuenta que mientras la sesión en Vim siga activa los buffers seguirán ahí hasta que vim se cierre o se elimine ese buffer (al decir eliminar el buffer, me refiero a cerrar el archivo no eliminarlo ).
Con el siguiente comando eliminamos un buffer...
:bdelete "nombre.archivo"
Ventanas / Windows
En vim una ventana es el medio inmediato por el cual se muestra un buffer, en vim es posible tener multiples ventanas abiertas con diferentes buffers o incluso el mismo buffer.
Para abrir un nueva ventana , desde el modo de comandos de nuestro editor contamos con los siguientes...
:split
:new
El comando :split sin argumentos es decir sin indicarle ningún archivo abrirá en la misma ventana otra nueva de manera horizontal, mostrando el mismo archivo en ambas; En cambio el comando :new sin ningún argumento abrirá una nueva ventana horizontal con un buffer vacío.
Supongamos que tenemos una distribución de ventanas como la siguiente...
Para escenarios como este algunos atajos con las teclas útiles...
Ctrl-W + h desplazarse de la ventana actual a la izquierda, Ctrl-W + l desplazarse de la ventana actual a la derecha Ctrl-W + j desplazarse de la ventana actual a la de abajo y con Ctrl-W + k de la ventana actual hacia arriba.
Pestañas / Tabs
En el editor Vim una pestaña (tab) es lo mas general en cuanto a este tema trata, una pestaña es o puede ser un conjunto de ventanas. A diferencia de otros editores en Vim ni una ventana ni una pestaña representan un archivo abierto, es posible que cerremos la pestaña o la ventana pero el archivo aún se mantendrá en el buffer.
Algunos comandos útiles para trabajar con las pestañas
:tabnew #abre una nueva pestaña
:tabclose #cierra la pestaña actual
:tabnext #ir a la siguiente pestaña
:tabprevious #ir a la pestaña anaterior
:tablast #ir a la última pestaña
:tabfirst #ir a la primer pestaña
También es útil navegar entre pestañas con el comando gt desde el modo de comandos, anteponiendo el numero de pestaña al que nos queremos desplazar, ejemplo... 2gt para ir a la pestaña dos.