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-v
para editar la línea de comando en vi. LuegoEsc-:wq
de 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 test
pero obtuve "no se puede ejecutar el archivo binario"test
archivo vacío , me funciona bien. ¿Qué se supone que debe hacer el comando y qué debetest
contener?test
contener?test
es solo un argumento para-a
.test
se 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
vi
sesión temporal . Ahora puede editarlo como desee e incluso agregar otro comando ...Cuando haya terminado de editar, escriba Esc
:wq
y se ejecutarán los comandos, por ejemplo:fuente
Esc
clave;)Esc
llaves? ¿Cómo pueden usar Vim entonces?Esc
clave cuando se ejecuta en un terminal de Vim.