Vim nivel medio: Pestañas, Ventanas y Buffers

Linux Nivel Medio 18 de jun. de 2023

Si pensabas que con Vim sólo podías editar ficheros de uno en uno, te voy a enseñar como puedes editar y/o visualizar al tiempo varios ficheros para optimizar tu trabajo.

Como sabrás si indicas a Vim como parámetro un fichero te lo abrirá para editar:

vim fichero.txt
Abrir un fichero en Vim

Pero también le puedes indicar a Vim que quieres editar varios de ellos, puedes usar varios parámetros para editar simultáneamente varios de diferentes formas.

Pestañas en Vim

Para abrir varios ficheros en Pestañas simplemente usa el parámetro -p a la hora de indicar los ficheros a abrir con vim:

# Abrir varios ficheros en PESTAÑAS
vim -p fich_01.txt fich_02.txt

# Incluso puedes usar comodines para abrir todos los ficheros..
vim -p fich*.txt
Abrir varios ficheros en PESTAÑAS
Pestañas en Vim

Moverse entre Pestañas
Para cambiar de ventana, puedes usar la combinación de teclas:
Ctrl+AvPag Para ir a la Siguiente pestaña
Ctrl+RePag Para ir a la pestana Anterior

Nota: También puedes usar gt y gT para desplazarte entre pestañas.

Abrir nueva Pestaña desde el editor Vim
Si tienes ya ficheros abiertos, pero necesitar abrir uno nuevo simplemente escribe:

# Comando en Vim para abrir un fichero en una nueva ventana
ESC :tabnew fichero.txt

# Comando en Vim para navegar en el directorio y escoger el fichero
ESC :tabnew .


Pulsar ESC y escribir :tabnew <nombre-fichero>

Ventanas en Vim

Para abrir con Vim varios ficheros con una visualización en ventana dividida, puedes usar la opción -o (división Horizontal) y -O (división Vertical)

# Abrir varios ficheros en VENTANAS (división Horizontal)
vim -o fich_01.txt fich_02.txt
Vim con división de ventanas en Horizontal (-o)
# Abrir varios ficheros en VENTANAS (división Vertical)
vim -O fich_01.txt fich_02.txt
Vim con división de ventanas en Vertical (-O)

Moverse entre Ventanas
Para moverte entre ventanas debes pulsar Ctrl+W y luego una de las flechas de cursor en la dirección de la ventana a la que te quieras dirigir (,,,)

Moverse entre ventanas: CTRL+W y Flecha de dirección

Abrir nueva ventana en Vim
Si ya tienes el editor abierto puedes editar un nuevo fichero en modo ventana usando los siguientes comando de vim:

# Abrir fichero en ventana (división Horizontal)
ESC :split ficheroA.txt

# Abrir fichero en ventana (division Vertical)
ESC :vsplit ficheroB.txt

Guardar y Cerrar todas las Pestañas y Ventanas

Si en algún momento quieres realizar una acción sobre todas los ficheros abiertos, ya sea en pestañas o ventanas, puedes usar el modificador all en Vim:

# Cerrar y salir sin guardar nada
ESC :qall!

# Guardar todos los ficheros (ventaña o pestañas)
ESC :wall

# Cerrar y Guardar Todo
ESC :wqall

Otro atajo rápido en Vim es que usar el comando Ctrl+W C 'cerrar ventana' para cerrar cualquier ventana o pestaña (excepto la última) en la que no tengas ningún cambio pendiente de guardar.

Buffers en Vim

Existe otro concepto en Vim, los 'buffers' que son espacios de memoria en donde se almacenan los ficheros y los cambios que estás realizando. Puedes estar editando unicamente dos ficheros, pero tener otros ficheros cargados en el buffer por si necesitas usar su contenido para copiar o editar su contenido.

Ver/listar los buffers
La forma de ver los buffers es mediante los comandos de vim:

:ls
:buffers
:files
Ver buffers en Vim

Los buffers tienen 3 modos:

  • activo/visible: Se muestran en una ventana (=fichero en edición)
  • oculto: No se muestra en ninguna ventana
  • inactivo: No se muestra en ninguna ventana y no tiene contenido

Cargar fichero en un buffer
Puedes cargar un fichero en un buffer en modo oculto y luego usarlo posteriormente, mediante el comando de vim:

# Cargar fichero en buffer oculto
ESC :badd fichero

# Ver buffers disponibles en vim
ESC :buffers

# Pasar el buffer N (número) a modo edición (ponerlo activo):
ESC :bN

# Cerrar/Borrar el buffer N (número)
ESC :bdN
Trabajar con Buffers en Vim
1: Buffer activo (en edición) - 2 y 3: Buffers ocultos (ficheros cargados)

Vim para ver diferencias entre ficheros

Otra utilidad del modo de ventanas es que puedes usar Vim, para ver las diferencias entre varios ficheros, para ello simplemente tienes que usar el parámetro -d (diferencia)

vim -d loren-1.txt loren2.txt
Iniciar vim en modo 'diff'

Si el fichero tiene líneas que "se salen" de la pantalla y no se muestran, simplemente cambiate a cada una de las ventanas y usa la opción wrap de Vim, para forzar la visibilidad de toda la linea en pantalla:

ESC :set wrap
Ajustar en Vim la visibilidad de todas las lineas en pantalla

El resultado debería ser parecido a esto:

Viendo diferencias de ficheros en Vim (-d)

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux