Isssue relacionado, mas não idêntico. O link é lessapenas sobre .
Abel Cheung
Respostas:
361
Usar:
git diff --color=always | less -r
--color=alwaysexiste para informar gita saída de códigos de cores, mesmo se a saída for um pipe (não um tty). E -rexiste para dizer lesspara interpretar esses códigos de cores e outras seqüências de escape. Use apenas -Rpara códigos de cores ANSI.
@ ripper234. Com gits recentes, git config color.ui truedeve ser suficiente para obter saída colorida e executar automaticamente um pager para saídas longas.
Stéphane Gimenez
4
Paralelamente a este Q / A, watch --color 'git diff --cached --color=always'e seus amigos podem lhe trazer uma grandiosidade adicional.
Alois Mahdal
27
Não está usando less -Rmelhor (ou export LESS=Rdentro /etc/profile)? Por que você permitiria que ele exibisse algo além de seqüências de escape de "cor" ANSI? Além disso, a página do manual dizWarning: 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
5
E se você esqueceu de especificar a -ropção, basta digitar "-r" no lessprompt. Obviamente, isso funciona com quase todas as opções (ou seja, -iativar a ignorância).
haridsv
3
grep --color=alwaysfunciona da mesma maneira. Isso não faz parte desta pergunta ou resposta, mas cheguei aqui ao pesquisar sobre essa questão, então está aí.
Frank Bryce
57
Outra opção seria ativar cores e usar 'less -r' como seu pager.
Usando o Git 2.11, descobri que color.ui truenão funcionava com um pager, mas funcionava color.ui always. Isso pode ter sido alterado desde que a resposta foi postada.
precisa saber é o seguinte
1
Esta opção (para ativar cores e usar 'less -r' como seu pager por padrão) color.ui truefunciona com comandos como git -p diffe git -p status(onde -psignifica canalizar toda a saída para $ PAGER, por padrão é less) mesmo para versões bastante antigas do git (por exemplo , Git 1.7.1). Mas você ainda precisa color.ui always(que instrui o git a imprimir códigos de cores "mesmo que a saída seja um pipe (não um tty)") para obter uma saída colorida quando você especificar git status | less -rou git diff | less -r. Ao especificar o redirecionamento de saída explicitamente, você não verá a saída após sair do pager.
Kenichi
29
Use a opção -r( --raw-control-chars) para less ou também -R(apenas sequências de escape ANSI).
Na verdade eu acabei de fazer alias less='less -r'. Alguma razão para não?
precisa saber é o seguinte
3
@ ripper234: Lembro-me vagamente de que poderia haver casos em que o uso -rquando não necessário pode levar a problemas de visualização.
enzotib
1
Por exemplo, quando você canta ackcom less -rvocê perde um retorno de carro
New Alexandria
6
Você pode usar \lessse a visualização atrapalhar.
Brian Peterson
4
Uh, você não tem que aliás lessa qualquer coisa, basta definir a $LESSvariável de ambiente para o conjunto de sinalizadores que você sempre quer fornecer para less, por exemploexport LESS='-MRq -z-2 -j2’
Sei que isso é antigo e muitos já forneceram a resposta certa, mas gostaria de acrescentar que é sempre melhor usar less -Re não less -rse você precisar apenas de cores ANSI, pois -rpodem ocorrer problemas na exibição dos caracteres.
Do 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
apenas sobre .Respostas:
Usar:
--color=always
existe para informargit
a saída de códigos de cores, mesmo se a saída for um pipe (não um tty). E-r
existe para dizerless
para interpretar esses códigos de cores e outras seqüências de escape. Use apenas-R
para códigos de cores ANSI.fonte
git config color.ui true
deve ser suficiente para obter saída colorida e executar automaticamente um pager para saídas longas.watch --color 'git diff --cached --color=always'
e seus amigos podem lhe trazer uma grandiosidade adicional.less -R
melhor (ouexport LESS=R
dentro/etc/profile
)? Por que você permitiria que ele exibisse algo além de seqüências de escape de "cor" ANSI? Além disso, a página do manual dizWarning: 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
opção, basta digitar "-r" noless
prompt. Obviamente, isso funciona com quase todas as opções (ou seja,-i
ativar a ignorância).grep --color=always
funciona da mesma maneira. Isso não faz parte desta pergunta ou resposta, mas cheguei aqui ao pesquisar sobre essa questão, então está aí.Outra opção seria ativar cores e usar 'less -r' como seu pager.
Isto resulta em
no seu ~ / .gitconfig
Para mais informações, consulte o livro Pro Git .
fonte
color.ui true
não funcionava com um pager, mas funcionavacolor.ui always
. Isso pode ter sido alterado desde que a resposta foi postada.color.ui true
funciona com comandos comogit -p diff
egit -p status
(onde-p
significa canalizar toda a saída para $ PAGER, por padrão éless
) mesmo para versões bastante antigas do git (por exemplo , Git 1.7.1). Mas você ainda precisacolor.ui always
(que instrui o git a imprimir códigos de cores "mesmo que a saída seja um pipe (não um tty)") para obter uma saída colorida quando você especificargit status | less -r
ougit diff | less -r
. Ao especificar o redirecionamento de saída explicitamente, você não verá a saída após sair do pager.Use a opção
-r
(--raw-control-chars
) para less ou também-R
(apenas sequências de escape ANSI).Eu tenho um apelido para isso em
~/.bashrc
fonte
alias less='less -r'
. Alguma razão para não?-r
quando não necessário pode levar a problemas de visualização.ack
comless -r
você perde um retorno de carro\less
se a visualização atrapalhar.less
a qualquer coisa, basta definir a$LESS
variável de ambiente para o conjunto de sinalizadores que você sempre quer fornecer paraless
, por exemploexport LESS='-MRq -z-2 -j2’
Também
tree
tem uma opção para forçar cores em:E assim por diante
ls
:fonte
Apenas para adicionar outra versão no "use less -r":
use a variável de ambiente LESS com o valor r (ou adicione r ao que já é)
por exemplo, como eu uso no meu .bashrc
(O X interrompe a limpeza da tela ao sair menos)
fonte
Caso alguém esteja interessado em paginar um json com
jq
eless
isso pode ser alcançado usando:por exemplo
Fonte: https://github.com/stedolan/jq/issues/764#issuecomment-95355331
fonte
Sei que isso é antigo e muitos já forneceram a resposta certa, mas gostaria de acrescentar que é sempre melhor usar
less -R
e nãoless -r
se você precisar apenas de cores ANSI, pois-r
podem ocorrer problemas na exibição dos caracteres.Do manual:
fonte