GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo acceder al shell o ejecutar comandos externos desde dentro de Vim

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

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

But before we start doing that, it's worth mentioning that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 14.04, and the Vim version we've used is 7.4.

Ejecutar comandos externos en Vim

A veces, es posible que desee ejecutar comandos externos desde la ventana del editor de Vim. Por ejemplo, considere una situación en la que abrió un archivo en Vim, realizó algunos cambios y luego, al intentar guardar esos cambios, Vim muestra un error que indica que no tiene suficientes permisos.

Ahora, salir de la sesión vim actual y volver a abrir el archivo con suficientes privilegios significará la pérdida de todos los cambios que ha realizado, por lo que, estará de acuerdo, no será una opción en la mayoría de los casos. En situaciones como estas, la capacidad de ejecutar comandos externos desde el editor resulta útil.

Volveremos al caso de uso anterior más adelante(**), pero por ahora, comprendamos cómo puede ejecutar comandos básicos desde dentro de vim.

Suponga que mientras edita un archivo, desea saber la cantidad de líneas, palabras y caracteres que contiene el archivo. Para hacer esto, en el modo de comando de Vim, solo ingrese dos puntos (:) seguidos de una explosión (!) y finalmente el comando ('wc' en este caso) seguido del nombre del archivo (use % para el archivo actual).

:! wc %

He aquí un ejemplo:

Archivo con el comando antes mencionado listo para ser ejecutado:

y aquí está la salida en la terminal:

Una vez que haya terminado de ver el resultado, presione la tecla Intro y volverá a su sesión de Vim.

Esta función puede resultar muy útil en situaciones en las que, por ejemplo, está escribiendo un código o secuencia de comandos y desea saber rápidamente si el código/secuencia de comandos contiene algún error de tiempo de compilación o de sintaxis.

Continuando, en caso de que el requisito sea agregar la salida al archivo, use ':¡leer!' dominio. He aquí un ejemplo:

:read ! wc %

El comando 'leer' 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 desea, también puede especificar un número de línea en particular; la salida se agregará después de esa línea en particular.

Por ejemplo, el siguiente comando agregará la salida de 'wc' después de la segunda línea del archivo.

:2read ! wc %

Nota :Use '$' 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 lo ayudará a guardar el archivo sin necesidad de cerrarlo primero (lo que significa que no se pierden los cambios no guardados) y luego abrirlo con, digamos , Sudo.

:w ! sudo tee %

Acceder a Shell en Vim

Además de ejecutar comandos individuales, también puede colocarse en un shell recién lanzado desde dentro de Vim. Para esto, todo lo que tiene que hacer es ejecutar el siguiente comando desde el editor:

:shell

o

:sh

y escriba 'exit' cuando haya terminado con el trabajo de shell; esto lo llevará de regreso a la sesión de Vim desde donde la dejó inicialmente.

El vacío legal para tener en cuenta

Si bien la capacidad de acceder a un shell definitivamente tiene sus propios usos en el mundo real, también se puede usar como una técnica de escalada de privilegios. Como hemos explicado en uno de nuestros tutoriales anteriores (sobre sudoedit), incluso si proporciona a un usuario acceso sudo para editar solo un archivo a través de Vim, puede iniciar un nuevo shell desde el editor usando esta técnica, y luego podrá para 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 ellas las hemos mencionado en este tutorial). La curva de aprendizaje de esta función no es pronunciada, por lo que tanto los principiantes como los usuarios experimentados pueden aprovecharla.

¿Has estado usando esta función durante bastante tiempo? ¿Tienes algo para compartir? Por favor, deje sus pensamientos en los comentarios a continuación.


Linux
  1. Linux:¿cómo ejecutar un gestor de arranque desde Linux?

  2. ¿Cómo eliminar las primeras N líneas de un archivo ASCII usando los comandos de Shell?

  3. ¿Cómo imprimir de Vim a Pdf?

  4. Cómo ejecutar un script de shell al inicio

  5. ¿Cómo eliminar cualquier cadena de un archivo a través de scripts de shell?

Cómo ejecutar Shell Script como servicio Systemd en Linux

Cómo ejecutar comandos de archivo .sh todo a la vez en Linux

¿Cómo acceder a los archivos de Windows desde Ubuntu?

¿Cómo ejecutar comandos de shell externos desde el controlador laravel?

¿En qué se diferencia install -c de cp?

¿Cómo ejecutar el comando Vim desde el shell?