Vim tutorial · 3 min read · Nov 16, 2025

Cómo acceder a la shell o ejecutar comandos externos desde Vim

Vim, como ya sabrás, es un editor potente y lleno de características. Aquí en HowtoForge, hemos escrito varios tutoriales sobre Vim, cubriendo su uso básico, complementos, así como algunas otras características útiles. Pero dado el mar de características que ofrece Vim, siempre encontramos algo útil para compartir con nuestros lectores.

En este tutorial, nos centraremos en cómo puedes ejecutar comandos externos y acceder a la shell de línea de comandos desde la ventana del editor.

Ejecutar comandos externos en Vim

A veces, puede que desees ejecutar comandos externos desde la ventana del editor Vim. Por ejemplo, considera una situación en la que has abierto un archivo en Vim, has realizado algunos cambios y luego, al intentar guardar esos cambios, Vim lanza un error diciendo que no tienes permisos suficientes.

Ahora, salir de la sesión actual de vim y volver a abrir el archivo con privilegios suficientes significará perder todos los cambios que has realizado, así que estarás de acuerdo en que eso no sería una opción en la mayoría de los casos. Son situaciones como estas donde la capacidad de ejecutar comandos externos desde el editor resulta útil.

Volveremos al caso de uso anterior más tarde (), pero por ahora, entendamos cómo puedes ejecutar comandos básicos desde vim.

Supongamos que mientras editas un archivo, deseas saber el número de líneas, palabras y caracteres que contiene el archivo. Para hacer esto, en el modo de comando de Vim, solo ingresa dos puntos (:) seguidos de un signo de exclamación (!) y finalmente el comando (‘wc’ en este caso) seguido del nombre del archivo (usa % para el archivo actual).

:! wc %

Aquí hay un ejemplo:

Archivo con el comando mencionado listo para ser ejecutado:

Comando listo para ser ejecutado en VIM

y aquí está la salida en la terminal:

Después de que hayas terminado de ver la salida, presiona la tecla Enter y volverás a tu sesión de Vim.

Esta característica puede ser realmente útil en situaciones donde, digamos, estás escribiendo un código o script, y deseas saber rápidamente si el código/script contiene errores de compilación o de sintaxis.

Siguiendo adelante, en caso de que la necesidad sea agregar la salida al archivo, usa el comando ‘:read !’. Aquí hay un ejemplo:

:read ! wc %

El comando ‘read’ inserta la salida del comando externo en una nueva línea debajo de la línea actual en el archivo que se está editando. Si lo deseas, también puedes especificar un número de línea particular: la salida se agregará después de esa línea en particular.

Por ejemplo, el siguiente comando añadirá la salida de ‘wc’ después de la segunda línea del archivo.

:2read ! wc %

Nota: Usa ‘$’ para insertar después de la última línea y ‘0’ para insertar antes de la primera línea.

Ahora, volviendo al caso de uso que discutimos al principio (), aquí está el comando que te ayudará a guardar el archivo sin necesidad de cerrarlo primero (lo que significa que no habrá pérdida de cambios no guardados) y luego abrirlo con, digamos, sudo.

:w ! sudo tee %

Acceder a la Shell en Vim

Además de ejecutar comandos individuales, también puedes ser llevado a una nueva shell lanzada desde dentro de Vim. Para esto, todo lo que tienes que hacer es ejecutar el siguiente comando desde el editor:

:shell

o

:sh

y escribe ‘exit’ cuando hayas terminado con el trabajo en la shell; esto te llevará de vuelta a la sesión de Vim desde donde te quedaste inicialmente.

La trampa a tener en cuenta

Si bien la capacidad de acceder a una shell definitivamente tiene sus propios usos en el mundo real, también puede ser utilizada como una técnica de escalada de privilegios. Como hemos explicado en uno de nuestros tutoriales anteriores (sobre sudoedit), incluso si le das a un usuario acceso sudo solo para editar un archivo a través de Vim, pueden lanzar una nueva shell desde dentro del editor usando esta técnica, y luego podrán hacer cualquier cosa como ‘root’ o superusuario.

La capacidad de ejecutar comandos externos desde dentro de Vim es una característica importante que puede ser útil en muchas situaciones (algunas de las cuales hemos mencionado en este tutorial). La curva de aprendizaje para esta característica no es empinada, por lo que tanto los principiantes como los usuarios experimentados pueden aprovecharla.

¿Has estado usando esta característica durante bastante tiempo? ¿Tienes algo que compartir? Por favor, deja tus pensamientos en los comentarios a continuación. Quizás también estés interesado en el comando tee de Linux.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.