¿Cómo hacer que Vim muestre los colores como lo indican los códigos de color?

61

En resumen, estoy en un esfuerzo por reemplazar lesscon vim( vimpager). Tengo configuraciones para los scripts para escupir colores (y negrita y todo agradable) siempre que pueden. lessentiende los códigos de colores y los muestra muy bien. ¿Cómo puedo vimanalizar los códigos y mostrar colores / negrita como lo lesshace?

phunehehe
fuente

Respuestas:

45

Dos respuestas:

Una breve: desea utilizar el script vim AnsiEsc.vim . Ocultará las secuencias de escape ANSI reales en su archivo y utilizará el resaltado de sintaxis para colorear el texto de manera adecuada. El problema con el uso de esto en un buscapersonas es que tendrá que hacer que vim reconozca cuándo usar esto. No estoy seguro si simplemente puede cargarlo siempre, o si entrará en conflicto con otros archivos de sintaxis. Tendrás que experimentar con eso.

Una respuesta larga: lo mejor que puede esperar es una solución parcial no portátil. Less realmente no comprende las secuencias de escape de la terminal, ya que estas dependen en gran medida de la terminal, pero menos puede reconocer (un subconjunto de) estas, y sabrá pasarlas a la terminal, si usa el -r(o-R) opción. El terminal interpretará las secuencias de escape y cambiará los atributos del texto (color, negrita, subrayado ...). Vim, al ser un editor en lugar de un buscapersonas, no pasa simplemente caracteres de control sin procesar al terminal. Necesita mostrarlos de alguna manera, para que pueda editarlos. Puede usar otras características de vim, como el ocultamiento y el resaltado de sintaxis para ocultar las secuencias y usarlas para configurar los colores del texto, sin embargo, siempre manejará solo un subconjunto de las secuencias de terminales y probablemente no funcionará en algunos terminales .

Este es realmente uno de los muchos problemas con los que se encontrará cuando intente utilizar un editor de texto como localizador.

Jan Hlavacek
fuente
Para resumirlo, debe escribir parte de un emulador de terminal en Vim, la parte que maneja las secuencias de escape de terminal que están presentes en su entrada.
Gilles 'SO- deja de ser malvado'
Gracias, creo que me estoy rindiendo. Si no es fácil, ya no tiene mucho sentido.
phunehehe
1
El enlace de @JanHlavacek está roto :(
Nitrodist
19
@Nitrodist: less -r FILE( fuente )
Adobe
1
Parece que el enlace de Jan se ha movido a linux-tips.com/t/how-to-enable-syntax-highlighting-in-less/208
Timothy Zorn
2

Ahora con vim 8 puede usar el modo terminal :terminaly luego en ese terminal hacer cat myfiley volver al modo normal con Ctrl-w N. Esto mostrará los códigos de color ANSI correctamente. Al automatizar estos pasos y leer desde la entrada estándar en lugar de un archivo, debería ser posible usar vim para reemplazar menos.

rubystallion
fuente
Eso no responde a la pregunta en absoluto. ¿Cómo se reemplaza esto less?
ossbuntu
@ossbuntu Si ejecuta ls --color=always >/tmp/colored.txty luego en vim :terminal cat /tmp/colored.txtseguido de :only, entonces tendrá la salida ls muy bien coloreada en vim como lo haría menos. Como vim admite pasar comandos como argumentos de línea de comandos en el inicio, es claramente posible jugar para hacer que la solución funcione para reemplazar less:)
rubystallion