linux - delete - ¿Por qué no "historia | vim "¿trabajo?
vim shortcuts (3)
Quiero usar el Vim para ver el resultado del history
(no en el shell). Creo que la history | vim
history | vim
funcionará (use el resultado del history
como la entrada de vim
), pero regresa con:
$history | vim
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: Finished.
¿Alguien puede explicar esto?
Al conectarse a vim , está cambiando la secuencia de entrada estándar. Como vim es un programa interactivo, requiere que la entrada estándar sea la consola.
Si desea ver en vim, debe decirle que está leyendo el archivo de stdin (proporcionando el argumento -
):
history | vim -
Alternativamente, podrías usar más o menos :
history | more
history | less
Estos dos últimos son preferibles. Si ingresas en vim , verá que tu "archivo" tiene modificaciones, por lo que no puedes salir con un comando straight :q
. En su lugar, debe forzar la renuncia por :q!
, que es un poco torpe
Por otro lado, puede salir más o menos simplemente escribiendo q
. Eche un vistazo a la página de manual para estos dos programas. Los usarás mucho.
Según lo recomendado por Russell Silva en los comentarios, puede abrir vim en modo de solo lectura cuando lee de stdin. Solo proporcione el argumento -R
. Entonces puede salir normalmente sin necesitar la anulación:
history | vim -R -
Aparte de vim -
, puedes probar la sustitución de comando bash como:
vim <(history)
Ver también:
Esto me sucedió tratando de enviarlo a la consola de fondo (&)
Un script utilizado:
...
vi "$file" &
...
# change to just:
vi "$file"
eliminando &, el problema desapareció.