Yo uso vim para las secuencias de comandos bash. a veces no quiero crear un archivo nuevo, hacerlo ejecutable, ejecutarlo y luego eliminarlo. Me refiero a los guiones que se usarán solo una vez.
Por ejemplo, abro vim y escribo esto:
#!/bin/bash
ll | while read line
do
echo $line
done
No guardé este archivo, solo uso vim para simplificar bash-scripting. Sé que puedo ejecutar un comando bash a través !de vim. Pero, ¿qué hay de ejecutar todo lo que está en el búfer?
command-line
external-command
bash
St.Antario
fuente
fuente

<C-x><C-e>y ejecutarla al escribir, ¿verdad?set -o vi, puede presionarEsc-vpara editar la línea de comando en vi. LuegoEsc-:wqde ejecutar.Respuestas:
Escribí una respuesta bastante extensa sobre esto en stack-overflow . La idea básica es que, dado que el comando de escritura trata de escribir no guardar , puede escribir el texto en su búfer en un programa externo, como python o bash. En su caso, desearía hacer algo como:
o
Estos comandos literalmente solo escriben el texto en su búfer directamente en el programa que especifique
!, lo cual es conveniente porque entonces no necesita guardar un archivo. Por supuesto, también puedes hacer algo como:que guarda su archivo y luego lo ejecuta como un script bash. Puedes elegir el que tenga más sentido para ti.
fuente
:w !bash -a testpero obtuve "no se puede ejecutar el archivo binario"testarchivo vacío , me funciona bien. ¿Qué se supone que debe hacer el comando y qué debetestcontener?testcontener?testes solo un argumento para-a.testse suponía que era un archivo. No estoy realmente seguro de qué hacer. Si está intentando algo complejo, podría ser mejor guardarlo en un archivo. Puede valer la pena hacer una pregunta por separado para que pueda proporcionar más detalles. Probablemente también sea una buena pregunta para Unix y LinuxEscenario: estás trabajando en bash shell. Primero, asegúrese de que el modo de edición local sea vi:
Ahora, cuando te encuentres trabajando en un comando largo como el siguiente, presiona Esc+ v.
Esto cargará su comando en una
visesión temporal . Ahora puede editarlo como desee e incluso agregar otro comando ...Cuando haya terminado de editar, escriba Esc
:wqy se ejecutarán los comandos, por ejemplo:fuente
Escclave;)Escllaves? ¿Cómo pueden usar Vim entonces?Escclave cuando se ejecuta en un terminal de Vim.