Buffers Tabs y Windows en Vim (Buffers, pestañas y ventanas en Vim)

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.