temas schemes colorscheme color best activate unix syntax-highlighting color-scheme

unix - colorscheme - vim color schemes list



Sintaxis resaltando/coloreando gato (13)

¿Hay algún método para colorear la salida de cat , como lo hace grep ?

Para grep , en la mayoría de las consolas muestra una salida coloreada que resalta las palabras clave buscadas. De lo contrario, puede forzarlo al llamar a grep --color ¿Existe una manera genérica de colorear el resultado de cualquier programa de acuerdo con su elección personal?

Por lo que entiendo, el programa en sí no es responsable de los colores. Es el caparazón.

Estoy usando el shell por defecto en FreeBSD 5.2.1 que parece que nunca ha visto colores desde época.


Por lo que entiendo, el binario en sí no es responsable de los colores. Es el caparazón.

Eso no es correcto Terminal simplemente interpreta los códigos de color que se envían a la terminal. Dependiendo de su capacidad, puede ignorar ciertos códigos de formateo / coloreado.

Desde la página de manual, no parece que cat admita que coloree su salida. Incluso si fuera para ayudar a colorear como grep, ¿qué color debería tener en el archivo de texto? El resaltado de sintaxis requiere conocimiento del lenguaje subyacente que no está en el alcance de una utilidad simple como cat.

Puede probar editores más potentes como vim, emacs, gedit, etc. en la plataforma de Unix si su objetivo es ver el código resaltado.


Opciones:

python-pygments es bueno. Tengo un alias

alias c=''pygmentize -g''

pero resaltar es otra alternativa ampliamente disponible es

alias cats=''highlight -O ansi --force''

Instalación:

Puede que tenga que instalar pygments usando:

sudo pip install pygments sudo easy_install Pygments #for Mac user

y para highlight paquete que está fácilmente disponible en todas las distribuciones

sudo apt-get install highlight sudo yum install highlight

En acción:

Estoy adjuntando tomas para ambos abajo para una buena comparación en los resaltados

Aquí está pygmentize en acción:

y esto es lo más highlight :


source-highlight

Tal vez sea posible encontrar interesantes source-highlight publicadas bajo GNU : un paquete diferente de highlight .

Extracto de apt-cache show source-highlight :

Description-en: convierte el código fuente a la sintaxis del documento resaltado.
Este programa, dado un archivo fuente, produce un documento con resaltado de sintaxis.
Admite resaltado de sintaxis para más de 100 formatos de archivo ...
Para la salida, se admiten los siguientes formatos: HTML, XHTML, LaTeX, Texinfo, secuencias de escape de color ANSI y DocBook

Hice algunos alias (Cat y PCat, ver abajo) y esta es su salida

Puede instalar en Debian basado en

sudo apt-get install source-highlight

y .bash_aliases como alias, por ejemplo, en tus alias de .bash_aliases con algo como la línea de abajo.

alias Cat=''source-highlight --out-format=esc -o STDOUT -i'' Cat myfile.c # or myfile.xml ...

O puede hacer un alias similar (sin el -i al final para tener la posibilidad de conectar )

alias PCat=''source-highlight --out-format=esc -o STDOUT '' tail myfile.sh | PCat # Note the absence of the `-i`

Entre las opciones que es posible leer de la man source-highlight del man source-highlight el -s que se puede seleccionar, o forzar , el resaltado por línea de comando o dejar al programa este deber:

-s , --src-lang = Idioma fuente STRING (use --lang-list para obtener la lista completa). Si no se especifica, el idioma de origen se deducirá de la extensión del archivo .

--lang-list enumera todo el lenguaje admitido y el archivo de definición de idioma asociado


Desde finales de abril de 2018 en adelante:

Bat : un clon de cat (1) con resaltado de sintaxis e integración de Git.

El proyecto es un clon cat con soporte para colores y personalizaciones escritas en Rust. Ofrece no solo resaltado de sintaxis con múltiples temas, sino también integración de Git.

Es, no hace falta decirlo, mucho más rápido que pygramize y no se ahogue cuando se confronta con archivos grandes.

El código fuente y las versiones binarias + instrucciones de instalación se pueden encontrar en el repositorio de Github vinculado anteriormente.




Hay una versión coloreada de cat - ccat . Obtenlo de ccat .

Instalación en Linux / Windows / macOS

Es un único ejecutable independiente, así que para instalarlo puede descomprimir la versión binaria para su sistema operativo desde https://github.com/jingweno/ccat/releases y copiar el binario ccat, por ejemplo, a /usr/local/bin .

Si quiere evitar los binarios, o si no hay un binario para su plataforma (por ejemplo, raspberry pi, etc.), puede compilar alternativamente desde la fuente dado que tiene un entorno de desarrollo de trabajo ( apt install golang en Linux basado en Debian o brew install golang en mac):

go get -u github.com/jingweno/ccat

El binario ccat se creará bajo su $GOPATH/bin .

Instalando en Mac a través de homebrew

brew install ccat

Alias ​​a cat

Para reemplazar el cat normal con ccat agrega en ~/.bashrc :

alias cat="ccat $*" alias cat0="/bin/cat $*" # for cases when you need plain `cat`

ccat se implementa en Go , por lo que es un binario nativo que se ejecuta mucho más rápido que las soluciones basadas en Python, como los python-pygments , el módulo detrás de pygmentize ; No vi ninguna diferencia de velocidad notable entre cat y ccat .


La herramienta que está buscando probablemente sea supercat (aquí hay una introducción rápida publicada por Linux Journal).

Me doy cuenta de que esta respuesta es tardía y de que no cumple completamente con los requisitos de OP. Así que lo estoy agregando solo como referencia (podría ser útil para otras personas que buscan cómo colorear el resultado del archivo de texto).


La mejor manera y la forma más fácil de hacerlo si tiene vim en su máquina es usar vimcat que viene con el programa vimpager .

  1. Instala vimpage con git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
  2. Ejecute vimcat:

    vimcat index.html


Recomendaría pygmentize del paquete python-pygments . Es posible que desee definir el siguiente alias práctico (a menos que use ccat del paquete ccrypt).

alias ccat=''pygmentize -g''

Y si quieres números de línea:

alias ccat=''pygmentize -g -O style=colorful,linenos=1''


Una vieja pregunta, simplemente respondiendo por el registro para proporcionar la solución que terminé usando. Tal vez esto es un poco hacky (probablemente no es la intención original del parámetro), pero:

alias cgrep = ''grep -C 9000''

gato lo que sea | cgrep ''snozzberries''

.. grep -CN proporcionará N líneas de contexto arriba y debajo del elemento encontrado. Si es más grande que la entrada, se incluye toda la entrada. En este caso, solo nos aseguramos de que sea más grande que cualquier salida de terminal típica que deseemos examinar manualmente, que generalmente es lo que usted está buscando hacer si destaca.

EDITAR: Sin embargo, esta solución sugerida a continuación por Beni Cherniavsky-Paskin es superior: hace coincidir (y resalta) la palabra que estás buscando o el comienzo de la línea (no resaltable). El resultado neto es exactamente lo que quieres.

cat whatever | egrep ''snozzberries|$''

Esa es la nueva mejor solución que he visto para ese problema, gracias Beni.


cat con resaltado de sintaxis simplemente está fuera del alcance. cat no es para eso. Si solo desea que todo el contenido de algún archivo se coloree de alguna manera (con el mismo color para todo el archivo), puede usar secuencias de escape de terminal para controlar el color.

Aquí hay un script de muestra que elegirá el color según el tipo de archivo (puede usar algo como esto en lugar de invocar a cat directamente):

#!/bin/bash fileType="$(file "$1" | grep -o ''text'')" if [ "$fileType" == ''text'' ]; then echo -en "/033[1m" else echo -en "/033[31m" fi cat $1 echo -en "/033[0m"

Lo anterior (en un terminal que admita esas secuencias de escape) imprimirá cualquier archivo de texto como ''negrita'' e imprimirá cualquier archivo binario como rojo. Puede usar strings lugar de cat para imprimir archivos binarios y puede mejorar la lógica para adaptarla a sus necesidades.


vimcat es un archivo único (script de shell) y funciona bien:

http://www.vim.org/scripts/script.php?script_id=4325

La última actualización es de diciembre de 2013. Sugerencia: puede forzar el reconocimiento del tipo de archivo mediante vimcat -c "set ft=<type>" .