Vim nivel medio: Pestañas, Ventanas y Buffers
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
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
![](https://soloconlinux.org.es/content/images/2023/06/Vim-Pesta-as.webp)
Moverse entre Pestañas
Para cambiar de ventana, puedes usar la combinación de teclas:Ctrl+AvPag
Para ir a la Siguiente pestañaCtrl+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 .
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
![](https://soloconlinux.org.es/content/images/2023/06/Vim-Horizontal.webp)
# Abrir varios ficheros en VENTANAS (división Vertical)
vim -O fich_01.txt fich_02.txt
![](https://soloconlinux.org.es/content/images/2023/06/Vim-Vertical.webp)
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 (→,←,↑,↓)
![](https://soloconlinux.org.es/content/images/2023/06/Vim-moverse-en-ventanas.webp)
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
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
![](https://soloconlinux.org.es/content/images/2023/06/Vim-Buffers.webp)
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
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
El resultado debería ser parecido a esto:
![](https://soloconlinux.org.es/content/images/2023/06/Vim-DIFF.webp)