Связанный, но не идентичный вопрос. Ссылка lessтолько о .
Абель Чунг
Ответы:
361
Использование:
git diff --color=always | less -r
--color=alwaysнужно gitли выводить цветовые коды, даже если на выходе есть труба (не tty). И -rесть, что сказать, lessчтобы интерпретировать эти цветовые коды и другие escape-последовательности. Используйте только -Rдля цветовых кодов ANSI.
@ ripper234. С недавними мерзавцами git config color.ui trueдолжно хватить цветного вывода и автоматического запуска пейджера для длинных выходов.
Стефан Гименес
4
Параллельно с этим Q / A, watch --color 'git diff --cached --color=always'и его друзья могут принести вам дополнительную удивительность.
Алоис Махдал
27
Не less -Rлучше использовать (или export LESS=Rв /etc/profile)? Почему вы позволяете ему отображать что-либо кроме «цветных» escape-последовательностей ANSI? Также на странице руководства написаноWarning: 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
И если вы забыли указать -rопцию, вы можете просто ввести «-r» в lessкомандной строке. Это, конечно, работает с большинством или с меньшим количеством опций (т. -iЕ. Для включения игнорирования).
haridsv
3
grep --color=alwaysработает так же. Это не часть этого вопроса или ответа, но я пришел сюда от поисков по поводу этого вопроса, так что вот оно.
Фрэнк Брайс
57
Другой вариант - включить цвета и использовать «less -r» в качестве пейджера.
Используя Git 2.11, я обнаружил, что color.ui trueне работает с пейджером, но color.ui alwaysсделал. Возможно, это изменилось с момента публикации ответа.
Том
1
Эта опция (чтобы включить цвета и использовать 'less -r' в качестве вашего пейджера по умолчанию) с командой color.ui truedo work для таких команд, как git -p diffи git -p status(где -pозначает, что весь вывод выводится в $ PAGER, по умолчанию это less) даже для довольно старых версий git (например, , Git 1.7.1). Но вам все еще нужно color.ui always(что говорит git выводить цветовые коды ", даже если вывод представляет собой трубу (не tty)"), чтобы получить цветной вывод при непосредственном указании git status | less -rили git diff | less -r. Когда вы явно указываете перенаправление вывода, вы не увидите вывод после выхода из пейджера.
Кеничи
29
Используйте опцию -r( --raw-control-chars) для less или также -R(только escape-последовательности ANSI).
На самом деле я только что сделал alias less='less -r'. Любая причина не для?
ripper234
3
@ ripper234: Я смутно помню, что могут быть случаи, когда использование, -rкогда оно не нужно, может привести к проблеме визуализации.
энзотиб
1
Например, когда вы передадите ackс less -rвами потерять возврат каретки
Новая Александрия
6
Вы можете просто использовать, \lessесли визуализация не работает.
Брайан Петерсон
4
Ну, вам не нужно lessни к чему псевдониму , просто установите $LESSпеременную окружения для набора флагов, которые вы всегда хотите предоставить less, напримерexport LESS='-MRq -z-2 -j2’
Я знаю, что он старый, и многие уже дали правильный ответ, но я хотел бы добавить, что его всегда лучше использовать, less -Rа не в том less -rслучае, если вам нужны только цвета ANSI, так как -rмогут возникнуть проблемы с отображением символов.
Из руководства:
-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
только о .Ответы:
Использование:
--color=always
нужноgit
ли выводить цветовые коды, даже если на выходе есть труба (не tty). И-r
есть, что сказать,less
чтобы интерпретировать эти цветовые коды и другие escape-последовательности. Используйте только-R
для цветовых кодов ANSI.источник
git config color.ui true
должно хватить цветного вывода и автоматического запуска пейджера для длинных выходов.watch --color 'git diff --cached --color=always'
и его друзья могут принести вам дополнительную удивительность.less -R
лучше использовать (илиexport LESS=R
в/etc/profile
)? Почему вы позволяете ему отображать что-либо кроме «цветных» escape-последовательностей ANSI? Также на странице руководства написаноWarning: 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
опцию, вы можете просто ввести «-r» вless
командной строке. Это, конечно, работает с большинством или с меньшим количеством опций (т.-i
Е. Для включения игнорирования).grep --color=always
работает так же. Это не часть этого вопроса или ответа, но я пришел сюда от поисков по поводу этого вопроса, так что вот оно.Другой вариант - включить цвета и использовать «less -r» в качестве пейджера.
Это приводит к
в вашем ~ / .gitconfig
Для получения дополнительной информации см. Книгу Pro Git .
источник
color.ui true
не работает с пейджером, ноcolor.ui always
сделал. Возможно, это изменилось с момента публикации ответа.color.ui true
do work для таких команд, какgit -p diff
иgit -p status
(где-p
означает, что весь вывод выводится в $ PAGER, по умолчанию этоless
) даже для довольно старых версий git (например, , Git 1.7.1). Но вам все еще нужноcolor.ui always
(что говорит git выводить цветовые коды ", даже если вывод представляет собой трубу (не tty)"), чтобы получить цветной вывод при непосредственном указанииgit status | less -r
илиgit diff | less -r
. Когда вы явно указываете перенаправление вывода, вы не увидите вывод после выхода из пейджера.Используйте опцию
-r
(--raw-control-chars
) для less или также-R
(только escape-последовательности ANSI).У меня есть псевдоним для этого в
~/.bashrc
источник
alias less='less -r'
. Любая причина не для?-r
когда оно не нужно, может привести к проблеме визуализации.ack
сless -r
вами потерять возврат каретки\less
если визуализация не работает.less
ни к чему псевдониму , просто установите$LESS
переменную окружения для набора флагов, которые вы всегда хотите предоставитьless
, напримерexport LESS='-MRq -z-2 -j2’
Также
tree
есть возможность навязывать цвета:И так далее для
ls
:источник
Просто добавьте еще одну версию в «use less -r»:
используйте переменную окружения LESS со значением r (или добавьте r к тому, что уже есть)
например, как я использую это в моем .bashrc
(X останавливает очистку экрана при выходе меньше)
источник
В случае, если кто-то заинтересован в поиске json
jq
иless
это может быть достигнуто с помощью:например
Источник: https://github.com/stedolan/jq/issues/764#issuecomment-95355331
источник
Я знаю, что он старый, и многие уже дали правильный ответ, но я хотел бы добавить, что его всегда лучше использовать,
less -R
а не в томless -r
случае, если вам нужны только цвета ANSI, так как-r
могут возникнуть проблемы с отображением символов.Из руководства:
источник