Recientemente aprendí que si busco en mis archivos less
, puedo presionar v
y abrir el búfer en Emacs. Esto funciona siempre que tenga la variable de entorno $EDITOR
configurada correctamente, que en mi caso la tengo como:
export EDITOR='env TERM=xterm-256color emacs -nw'
Lo anterior me da la capacidad de cargar emacs dentro del terminal que se ejecuta less
.
Sin embargo, el truco anterior no funciona cuando se canalizan comandos a less
. Al hacer esto, se less
queja con el siguiente mensaje:
Cannot edit standard input (press RETURN)
Mi pregunta es, ¿por qué sucede esto? Pero lo más importante, ¿hay alguna solución ?
Piping into less and editing: “cannot edit standard input” error. Workarounds?
está claro. ¿Por qué pensar lo contrario?why
única, y no laworkarounds
, así que agregué el énfasis.Respuestas:
Como ya se dijo, no puede editar una secuencia de entrada.
La solución es bastante obvia: guarde la secuencia en un archivo desde dentro
less
y abra el archivo guardado . Para hacerlo mientras ve, presiones
y asigne un nombre a un archivo. Luego, salgaless
y abra el archivo a mano o, aún desde adentroless
, escriba:e
y dé el nombre del archivo que acaba de guardar.fuente
Una buena solución es canalizar la salida de less a su editor, por ejemplo, después de "echo foo | less" puede hacer:
g
saltará a la primera línea del archivo / entrada,|
invocará la acción "canalizar",$
es la marca ("el final"), seguido del comando para canalizar el rango (vim -
en este caso, donde el "-" significa para leer la entrada de stdin).fuente
Significa exactamente lo que dijo: solo puede editar un archivo que está en el disco de esta manera (desde
less
). Si canaliza la salida de un proceso,STDOUT
se va a utilizarSTDIN
paraless
; No hay archivo para editar.fuente