Guía completa de buffers en Vim

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:editcomando que puede usar para abrir un archivo para editar, en una sesión activa de Vim. O bien, puede utilizar el:ecomando 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:ecomando 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:edominio.

mal comando

Eso no es un error tipográfico para ‘malo’. Vim tiene la:badddominio. 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:baddominio.

Como sugiere el nombre, toma un argumento que es un nombre de archivo y lo agrega al búfer.

:badd <filename>

La diferencia entre:edity:baddel comando es que cuando usas:editel 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:editcomando, el archivo que especifique se mostrará en la ventana actual.

Considerando que, cuando usas:baddcomando, 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:baddcomando 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:splity:vsplitcomandos y especifique un nombre de archivo para crear una división horizontal y una división vertical respectivamente. Como alternativa, puede utilizar el:spy:vscomandos para abreviar, para los comandos respectivos.

:split <filename>
:vsplit <filename>
abrir búferes en ventanas divididas

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
enumerar los búferes de Vim usando los comandos

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, elaEl 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.

imagen de algunos archivos en el búfer usando el comando "ls"

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

imagen de un archivo en el búfer que se oculta y se le realizan algunas modificaciones

Miremos a otro example. Aquí, hice algunas ediciones en el archivo ‘a.rs’ y lo oculté usando:set hiddendominio. 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)
uso de Vim "pelota" y "bola vertical" comandos

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:bdeletecomando junto con el nombre del búfer (o su índice) para eliminarlo del búfer. También puede utilizar el:bdComando si eres un poco perezoso.

:bdelete <filename>
eliminar búferes en Vim

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
eliminar un rango de búferes en Vim

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:buffercomando, el:bpara abreviar.

:buffer <filename>
cambiar entre búferes abiertos usando el comando

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úferes abiertos usando el comando

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:bnextdominio. 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:bpreviousdominio. Y el comando abreviado para cambiar al búfer anterior es:bp.

:bprevious
alternar entre búferes usando los comandos

Saltar al primer y último búfer

Puedes usar fácilmente el comando:b1para 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:bfirstcomando, el:bfsi eres tan perezoso como yo.

:bfirst

Y, para saltar al último búfer [without knowing its number]utilizar el:blastcomando, el:bldominio.

:blast
cambiar entre el primer y último búfer en Vim

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 hiddendominio.

:set hidden
ocultar búferes en Vim para cambiar entre búfer sin guardar o sin descartar cambios

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 hiddencomando 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.

Artículos Relacionados