Emisión relacionada pero no idéntica. El enlace es lesssolo sobre .
Abel Cheung el
Respuestas:
361
Utilizar:
git diff --color=always | less -r
--color=alwaysestá ahí para decirle gita los códigos de color de salida, incluso si la salida es una tubería (no un tty). Y -restá ahí para decir lessque interprete esos códigos de color y otras secuencias de escape. Úselo solo -Rpara códigos de color ANSI.
@ ripper234. Con gits recientes, git config color.ui truedebería ser suficiente para obtener una salida en color y ejecutar automáticamente un buscapersonas para salidas largas.
Stéphane Gimenez
44
Paralelamente a este Q / A, watch --color 'git diff --cached --color=always'y sus amigos pueden brindarte algo de genialidad adicional.
Alois Mahdal
27
¿No está usando less -Rmejor (o export LESS=Ren /etc/profile)? ¿Por qué permitiría que mostrara algo más que secuencias de escape de "color" ANSI? Además, la página del manual diceWarning: when the -r option is used, less cannot keep track of the actual appearance of the screen (since this depends on how the screen responds to each type of control character). Thus, various display problems may result, such as long lines being split in the wrong place.
x-yuri
55
Y si olvidó especificar la -ropción, puede escribir "-r" en el lessindicador. Por supuesto, esto funciona con la mayoría o todas las opciones menos (es decir, -iactivar ignorecase).
haridsv
3
grep --color=alwaysFunciona de la misma manera. Esto no es parte de esta pregunta o respuesta, pero llegué aquí buscando en Google esa pregunta, así que ahí está.
Frank Bryce
57
Otra opción sería habilitar colores y usar 'less -r' como buscapersonas.
Usando Git 2.11, descubrí que color.ui trueno funcionaba con un buscapersonas, pero color.ui alwayssí. Esto puede haber cambiado desde que se publicó la respuesta.
Tom Zych
1
Esta opción (para habilitar colores y usar 'less -r' como buscapersonas de forma predeterminada) color.ui truefunciona para comandos como git -p diffy git -p status(donde -psignifica canalizar toda la salida a $ PAGER, por defecto es less) incluso para versiones bastante antiguas de git (por ejemplo , Git 1.7.1). Pero aún necesita color.ui always(lo que le dice a git que envíe códigos de color "incluso si la salida es una tubería (no un tty)") para obtener una salida de color cuando especifica directamente git status | less -ro git diff | less -r. Cuando especifica la redirección de salida explícitamente, no verá la salida después de salir del buscapersonas.
kenichi
29
Use la opción -r( --raw-control-chars) para menos, o también -R(solo secuencias de escape ANSI).
En realidad lo acabo de hacer alias less='less -r'. ¿Alguna razón para no hacerlo?
ripper234
3
@ ripper234: Recuerdo vagamente que podría haber casos en los que usarlos -rcuando no sean necesarios puede ocasionar problemas de visualización.
enzotib
1
Por ejemplo, cuando conectas ackcon una tubería less -rpierdes un retorno de carro
Nueva Alejandría
66
Solo puede usar \lesssi la visualización se complica.
Brian Peterson
44
Uh, no tienes que usar alias lesspara nada, solo configura la $LESSvariable de entorno al conjunto de indicadores que siempre deseas proporcionar less, por ejemploexport LESS='-MRq -z-2 -j2’
wjv
14
También treetiene una opción para forzar colores en:
Sé que esto es antiguo y muchos ya han proporcionado la respuesta correcta, pero me gustaría agregar que siempre es mejor usarlo less -Ry no less -rsi solo necesita colores ANSI, ya que -rpueden presentarse problemas al mostrar los caracteres.
Del manual:
-r or --raw-control-chars
Causes "raw" control characters to be displayed. The default
is to display control characters using the caret notation; for
example, a control-A (octal 001) is displayed as "^A". Warn‐
ing: when the -r option is used, less cannot keep track of the
actual appearance of the screen (since this depends on how the
screen responds to each type of control character). Thus, var‐
ious display problems may result, such as long lines being
split in the wrong place.
-R or --RAW-CONTROL-CHARS
Like -r, but only ANSI "color" escape sequences are output in
"raw" form. Unlike -r, the screen appearance is maintained
correctly in most cases. ANSI "color" escape sequences are
sequences of the form:
ESC [ ... m
less
solo sobre .Respuestas:
Utilizar:
--color=always
está ahí para decirlegit
a los códigos de color de salida, incluso si la salida es una tubería (no un tty). Y-r
está ahí para decirless
que interprete esos códigos de color y otras secuencias de escape. Úselo solo-R
para códigos de color ANSI.fuente
git config color.ui true
debería ser suficiente para obtener una salida en color y ejecutar automáticamente un buscapersonas para salidas largas.watch --color 'git diff --cached --color=always'
y sus amigos pueden brindarte algo de genialidad adicional.less -R
mejor (oexport LESS=R
en/etc/profile
)? ¿Por qué permitiría que mostrara algo más que secuencias de escape de "color" ANSI? Además, la página del manual diceWarning: when the -r option is used, less cannot keep track of the actual appearance of the screen (since this depends on how the screen responds to each type of control character). Thus, various display problems may result, such as long lines being split in the wrong place.
-r
opción, puede escribir "-r" en elless
indicador. Por supuesto, esto funciona con la mayoría o todas las opciones menos (es decir,-i
activar ignorecase).grep --color=always
Funciona de la misma manera. Esto no es parte de esta pregunta o respuesta, pero llegué aquí buscando en Google esa pregunta, así que ahí está.Otra opción sería habilitar colores y usar 'less -r' como buscapersonas.
Esto resulta en
en su ~ / .gitconfig
Para obtener más información, consulte el libro Pro Git .
fuente
color.ui true
no funcionaba con un buscapersonas, perocolor.ui always
sí. Esto puede haber cambiado desde que se publicó la respuesta.color.ui true
funciona para comandos comogit -p diff
ygit -p status
(donde-p
significa canalizar toda la salida a $ PAGER, por defecto esless
) incluso para versiones bastante antiguas de git (por ejemplo , Git 1.7.1). Pero aún necesitacolor.ui always
(lo que le dice a git que envíe códigos de color "incluso si la salida es una tubería (no un tty)") para obtener una salida de color cuando especifica directamentegit status | less -r
ogit diff | less -r
. Cuando especifica la redirección de salida explícitamente, no verá la salida después de salir del buscapersonas.Use la opción
-r
(--raw-control-chars
) para menos, o también-R
(solo secuencias de escape ANSI).Tengo un alias para esto en
~/.bashrc
fuente
alias less='less -r'
. ¿Alguna razón para no hacerlo?-r
cuando no sean necesarios puede ocasionar problemas de visualización.ack
con una tuberíaless -r
pierdes un retorno de carro\less
si la visualización se complica.less
para nada, solo configura la$LESS
variable de entorno al conjunto de indicadores que siempre deseas proporcionarless
, por ejemploexport LESS='-MRq -z-2 -j2’
También
tree
tiene una opción para forzar colores en:Y así sucesivamente para
ls
:fuente
Solo para agregar otra versión en "use less -r":
use la variable de entorno MENOS con el valor r (o agregue r a lo que ya es)
por ejemplo, como lo uso en mi .bashrc
(La X detiene el borrado de la pantalla al salir menos)
fuente
En caso de que alguien esté interesado en paginar un json
jq
yless
se pueda lograr usando:p.ej
Fuente: https://github.com/stedolan/jq/issues/764#issuecomment-95355331
fuente
Sé que esto es antiguo y muchos ya han proporcionado la respuesta correcta, pero me gustaría agregar que siempre es mejor usarlo
less -R
y noless -r
si solo necesita colores ANSI, ya que-r
pueden presentarse problemas al mostrar los caracteres.Del manual:
fuente