Estoy tratando de redirigir la salida de un comando bash a un nuevo archivo.
Si pruebo la tubería de la siguiente manera:
ls -la | vim
Bash me muestra los errores:
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
Sé que puedo abrir Vim y luego usar:
:r !ls -la
Pero, ¿hay alguna manera de hacer esto en bash, de modo que Vim se abra y la salida se pegue allí automáticamente?
<(ls -la)
es en realidad la sustitución de procesos en lugar de la sustitución de comandos .Estás muy cerca por tu cuenta. Solo te faltaba un personaje.
fuente
Aquí hay otro enfoque, con suerte para enseñarle a alguien algo nuevo.
Si sabe que el comando
:r !ls -la
funciona dentro de vim, puede hacer lo siguiente para abrir vim y hacer que ejecute el comando tan pronto como se abra, directamente desde bash:Esto es equivalente a abrir y
vim
luego ejecutar el comando:r! ls -la
. Esto debería funcionar con cualquiervim
comando, donde el comando viene después de la-c
opción.fuente
Puedes decirle a vim que abra stdin:
fuente
Si su objetivo es simplemente obtener el resultado en un archivo de texto, entonces no necesita invocar vim. Bash puede hacerlo solo con
fuente
setlocal buftype=nofile
Esta es una buena opción si va a crear un alias para reemplazar
less
:¡Ahora no necesita escribir el! abandonar.
Otra opción es:
para que puedas salir con solo
q<enter>
.fuente