Empujeha sido uno de los editores de texto más populares que también influye en las extensiones de otros IDE.
Si es un usuario avanzado de Vim, es posible que esté utilizando un multiplexor de terminal como tmux o screen.
Eso podría funcionar, pero no es la “forma Vim” de hacer las cosas.
Entonces, ¿cómo se editan varios archivos a la vez sin cerrar uno y abrir otro archivo? Bueno, ¡déjame presentarte los búferes de Vim!
¿Qué es un búfer en Vim?
Técnicamente hablando, un búfer es cualquier cosa que se carga en la memoria y que se utilizará en el futuro inmediato. La barra de progreso verde en YouTube videos es un excelente example de un búfer. Ahora, hablando de búferes en contexto con Vim, significa cualquier archivo que haya abierto en Vim que esté almacenado en la memoria para su edición.
Creación de nuevos búferes
Ahora que sabe qué es un búfer y cómo es útil en Vim, repasemos cómo puede crear nuevos búferes en Vim, es decir, abrir varios archivos en Vim simultáneamente.
comando de edición
Vim tiene la:edit
comando que puede usar para abrir un archivo para editar, en una sesión activa de Vim. O bien, puede utilizar el:e
comando si quiere ser realmente eficiente en Vim.
:edit <filename>
Si existe un archivo con ese nombre, se cargará en elbúfer activode lo contrario, se creará un nuevo archivo.
Con eso, puede comenzar a editar el “búfer actual” (archivo abierto).
Como puede ver, al principio, abro el archivo ‘main.rs’ usando el:e
comando y Vim inmediatamente cargó ese archivo en el búfer activo. Luego, cargo ‘node.rs’ y coloca ‘node.rs’ en el búfer activo, reemplazando ‘main.rs’. Finalmente, cargo el archivo ‘platform.rs’ en el búfer activo que reemplaza el archivo anterior que estaba en el búfer activo.
Al hacer esto, cargué tres archivos en el búfer activo usando el:e
dominio.
mal comando
Eso no es un error tipográfico para ‘malo’. Vim tiene la:badd
dominio. Léelo como b-add o buffer-add y entenderás su significado.
Si prefiere usar una versión más corta de los comandos, puede usar el:bad
dominio.
Como sugiere el nombre, toma un argumento que es un nombre de archivo y lo agrega al búfer.
:badd <filename>
La diferencia entre:edit
y:badd
el comando es que cuando usas:edit
el archivo especificado se cargará en el búfer, sí, pero estará en elbúfer activo. Lo que significa que si está editando un archivo y usa:edit
comando, el archivo que especifique se mostrará en la ventana actual.
Considerando que, cuando usas:badd
comando, el archivo que especifique se cargará en el búfer, en segundo plano.
Miremos un example.
Como puede ver en este gif, inicialmente no tengo ningún archivo abierto, luego agrego ‘main.rs’ al búfer usando:badd
comando pero ‘main.rs’ no se abre para editarlo de inmediato. También agrego ‘utils.rs’ al búfer y todavía estoy en el archivo vacío sin ningún nombre.
División de ventanas
Como ya sabrá, Vim admite la creación de paneles divididos horizontales y verticales. Naturalmente, esto es para que pueda tener varios archivos abiertos para verlos y editarlos a la vez.
Existen varios métodos para crear divisiones en Vim.
Utilizar cualquiera:split
y:vsplit
comandos y especifique un nombre de archivo para crear una división horizontal y una división vertical respectivamente. Como alternativa, puede utilizar el:sp
y:vs
comandos para abreviar, para los comandos respectivos.
:split <filename>
:vsplit <filename>

Mostrar búferes abiertos
Antes de aprender a cambiar entre búferes, debe saber qué archivos están cargados actualmente en el búfer y cómo ver esos búferes abiertos.
Hay tres comandos que puede usar para enumerar los búferes abiertos y se enumeran a continuación:
:ls
:files
:buffers

Cuando enumere los búferes, le dará algunos detalles…
Al principio, le dará un índice de cada archivo abierto en el búfer, de esa manera puede cambiar entre búferes sin tener que escribir el nombre completo del archivo.
Si el búfer está activo, en la ventana actual, mostrará un%
símbolo antes del nombre del archivo. Además, si es el búfer activo, ela
El símbolo se mostrará antes del nombre del archivo.
Los siguientes indicadores también muestran más información sobre un búfer:
%
: Buffer que está en la ventana actual#
: Búfer alternativo (el último archivo que se editó más recientemente en la ventana actual)a
: Búfer activo (el archivo que se está editando en la ventana actual)h
: Búfer oculto (búfer con modificaciones no guardadas pero que no se muestra en ninguna ventana)u
: Búfer no listado (archivos que no están abiertos en Vim pero están presentes en el directorio de trabajo actual; use:ls!
para ver esto)-
: Búfer con ‘modificable’ desactivado=
: un búfer de solo lectura+
: Un búfer modificado (búfer con cambios que no se escriben en el disco)x
: Un búfer que tiene errores de lectura
Estas banderas de búfer se pueden combinar para representar un significado específico.

Los más comunes example es%a
lo que significa que dicho búfer está “abierto” (en edición) en la ventana actual.

Miremos a otro example. Aquí, hice algunas ediciones en el archivo ‘a.rs’ y lo oculté usando:set hidden
dominio. Luego cambié a editar ‘main.c’ sin escribir ninguna modificación que hice en ‘a.rs’.
Y ahora las banderas de ‘a.rs’ indican exactamente eso con#h +
banderas
#
-> Fue el último archivo que se editó en la ventana actual (antes de cambiar a editar ‘main.c’)h
-> Es un búfer oculto+
-> Se modificó pero los cambios no se guardaron en el disco
Extra
Con algunos archivos en el búfer, puede abrirlos todos para editarlos en cada ventana separada usando cualquiera de los siguientes comandos:
:ball
-> Haga n divisiones horizontales y abra todos los archivos en Windows (donde n es la cantidad de archivos en el búfer):vertical ball
-> Haga n divisiones verticales y ábralas todas en Windows (nuevamente, n es la cantidad de archivos en el búfer)

Eliminación de búferes
Cuando hay buffers abiertos que ya no son necesarios, lo mejor es deshacerse de ellos. ¿Por qué mantener un archivo abierto en el búfer si ya no tiene la intención de editarlo?
Para hacer exactamente eso, puede utilizar el:bdelete
comando junto con el nombre del búfer (o su índice) para eliminarlo del búfer. También puede utilizar el:bd
Comando si eres un poco perezoso.
:bdelete <filename>

Al igual que con todo en Vim, incluso puede eliminar varios búferes a la vez especificando un rango. A continuación se muestra un comando si desea eliminar los búferes 1, 2, 3 y 4:
:1,4bd

Moverse entre búferes
Ahora que sabe cómo agregar archivos al búfer, cómo eliminarlos del búfer y enumerar los archivos que están abiertos en el búfer, echemos un vistazo a cómo pasar de editar un archivo a otro archivo sin salir de Vim.
Hay varias formas de cambiar entre búferes.
Cambiar a un búfer específico
La mayoría de las veces, al editar varios archivos, alterna entre unos pocos archivos seleccionados en lugar de abrir todos los archivos.
Cuando necesite cambiar de un archivo a otro, use el:buffer
comando, el:b
para abreviar.
:buffer <filename>

Cuando sepa el número de búfer, puede cambiar al búfer deseado simplemente mencionando su nombre usando el siguiente comando:
:bufferN
Aquí N es el número de búfer.

Cambiar entre búfer, consecutivamente
Dado que cada búfer tiene un número único y el número no cambia, puede saltar fácilmente al búfer siguiente o anterior de la lista de búferes abiertos.
Cuando desee cambiar al siguiente búfer, utilice el:bnext
dominio. Como con la mayoría de los comandos de Vim, existe un comando más corto, que es:bn
.
:bnext
Para cambiar al búfer anterior, puede utilizar el:bprevious
dominio. Y el comando abreviado para cambiar al búfer anterior es:bp
.
:bprevious

Saltar al primer y último búfer
Puedes usar fácilmente el comando:b1
para cambiar al primer búfer, pero ¿cómo cambia al último búfer sin conocer su índice?
¡Hay comandos disponibles en Vim para hacer exactamente esto!
Si desea saltar al primer búfer, utilice el:bfirst
comando, el:bf
si eres tan perezoso como yo.
:bfirst
Y, para saltar al último búfer [without knowing its number]utilizar el:blast
comando, el:bl
dominio.
:blast

Ocultar búferes
Cuando intente cambiar entre búferes cuando haya modificado el búfer activo, Vim le preguntará si desea descartar los cambios o guardarlos, antes de cambiar a otro búfer.
Eso puede ser bastante molesto. Para deshabilitar ese mensaje (por búfer, por sesión), use el:set hidden
dominio.
:set hidden

Esto mantendrá los cambios “en la memoria”. Los cambios que haya realizado no se descartarán ni se escribirán en el disco. Serán “guardados en el búfer”, para ser tratados más adelante.
Ahora, Vim no seguirá preguntando si desea guardar los cambios o no cuando cambie de un búfer modificado a otro búfer.
Si desea que esto se aplique automáticamente a cada archivo, es mejor que agregue la siguiente línea a su archivo ‘vimrc’:
set hidden
De esta manera, no tendrás que correr:set hidden
comando para cada búfer cada vez que abre Vim.
Conclusión
Este artículo profundiza en casi todas las operaciones que puede usar para manipular búferes en Vim.
Si desea aprender temas avanzados de Vim como este, le recomiendo usar esta capacitación de Vim de Jovica Ilic.