¿`menos` o `más` admiten el escape ansi `\x1b[2K` (erase_line)?

¿`menos` o `más` admiten el escape ansi `\x1b[2K` (erase_line)?

Básicamente quiero animar mi terminal pero como el texto es demasiado largo, necesito un buscapersonas. Digamos que quiero cambiar el color de mi texto periódicamente en menos. ¿Es posible?

Respuesta1

EDITARlas respuestas porvonbrandyThomas Dickeyson técnicamente más precisos.

lessadmite escapes ANSI sin formato cuando -rse utiliza la opción. También admite Borrar en línea.

Sin embargo, no verás ninguna animación. Por ejemplo:

echo -e "foo\x1b[1G\x1b[2Kbar" > test.ansi
less -r test.ansi

Sólo imprimirá bar.

morepasa escapes ANSI de forma predeterminada, pero no admite la edición de líneas según lo que he probado.

Ver tambiénesta respuesta de Stackoverflow sobre las diferencias de lessymoremost.

Respuesta2

Borrar la línea sólo tiene una relación indirecta con el cambio de los colores del terminal: si cambia elfondocolor, entonces muchos terminales (consola Linux, rxvt, xterm y programas que imitan uno de ellos) colorearán el área limpia del fondo usando ese color.

lessUtiliza algunas operaciones de compensación, pero no \x1b[2K. Leer elfuente, utiliza varias funciones utilizando la interfaz termcap. Las partes más relevantes se describen en elinformación termino(5)página del manual:

   clr_bol                   el1    cb   Clear to beginning
                                         of line
   clr_eol                   el     ce   clear to end of line
                                         (P)

Es decir, \x1b[Ky \x1b[K, para el1y el, respectivamente. No existe una capacidad termcap convencional el2y (a menos que indique lesssimplemente pasar el contenido de un archivo usando la opción -ro -R), lessno enviará un archivo \x1b[2K.

Lo mismo es cierto para more, por ejemplo, como en elutil-linuxpaquete: utiliza solo funciones de termcap. A diferencia de less, moreno tiene opción para enviar caracteres no imprimibles directamente al terminal.

Si utilizas la opción -ro de , debes tener en cuenta que es-Rlesslimitado: lessno sabe (ni le importa mucho) lo que hacen esos escapes. Desde elpagina del manual:

-ro--raw-control-chars
Causas"crudo"caracteres de control que se mostrarán. El valor predeterminado es mostrar caracteres de control usando la notación de intercalación; por ejemplo, un control A (octal 001) se muestra como "^A". Advertencia: cuando -r se utiliza la opción,less no puedorealice un seguimiento de la apariencia real de la pantalla (ya que esto depende de cómo responde la pantalla a cada tipo de carácter de control). Por lo tanto, pueden producirse diversos problemas de visualización, como líneas largas que se dividen en el lugar equivocado.

Respuesta3

Lo que reacciona a las secuencias de escape normalmente es el tty (a menos que el programa en ejecución configure que no las respete, en cuyo caso el programa mismo puede hacerlo). more(1)realiza una reescritura de pantalla bastante primitiva (en realidad es suficiente escribir líneas de longitud de pantalla y esperar a que se presione una tecla), por lo que supongo que simplemente pasa la entrada. less(1)necesita hacer una copia de seguridad, por lo que necesita un control más detallado de la pantalla.

información relacionada