Может меньше сохранить окрашенный вывод?

Если Ваша программа уже работает, можно приостановить ее с Ctrl-Z, вытяните его в фон с bg и затем disown это, как это:

$ sleep 1000
^Z
[1]+  Stopped                 sleep 1000
$ bg
$ disown
$ exit
342
24.08.2011, 15:13
6 ответов

Использование:

git diff --color=always | less -r

--color=always есть ли для сообщения git к кодам цвета вывода, даже если вывод является каналом (не tty). И -r есть ли для сообщения less интерпретировать те цветовые коды и другие escape-последовательности. Использовать -R для цветовых кодов ANSI только.

405
27.01.2020, 19:26
  • 1
    @ripper234. С недавними мерзавцами, git config color.ui true должен быть достаточно, чтобы получить окрашенный выводом и автоматически выполнить пейджер для долгих выводов. –  Stéphane Gimenez 24.08.2011, 15:48
  • 2
    Параллельно к этому Q/A, watch --color 'git diff --cached --color=always' и его друзья могут принести Вам некоторое дополнительное великолепие. –  Alois Mahdal 26.07.2013, 12:19
  • 3
    не использует less -R лучше (или export LESS=R в /etc/profile)? Почему Вы позволили бы этому отображаться, что-нибудь кроме ANSI "окрашивает" escape-последовательности? Кроме того, говорится в странице справочника 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 10.06.2014, 15:57
  • 4
    И если Вы забыли указывать -r опция, можно просто ввести "-r" в less подсказка. Это, конечно, работает с большинством или всеми меньше опций (т.е. -i включать ignorecase). –  haridsv 07.01.2016, 11:32
  • 5
    grep --color=always работает тот же путь. Это не часть этого вопроса или ответа, но я добрался здесь от поиска с помощью Google о том вопросе, таким образом, там это. –  Frank Bryce 06.12.2016, 16:37

Использовать -r (--raw-control-chars) опция к меньше, или также -R (только escape-последовательности ANSI).

У меня есть псевдоним для этого в ~/.bashrc

alias rless='less -r'
29
27.01.2020, 19:26
  • 1
    На самом деле я просто сделал alias less='less -r'. Какая-либо причина не к? –  ripper234 24.08.2011, 15:25
  • 2
    @ripper234: Я неопределенно помню, что могли быть случаи при использовании -r при отсутствии необходимости может привести к проблеме визуализации. –  enzotib 24.08.2011, 15:29
  • 3
    Например, когда Вы передаете по каналу ack с less -r Вы теряете возврат каретки –  New Alexandria 14.01.2013, 17:58
  • 4
    , который можно просто использовать \less если визуализация портит. –  Brian Peterson 26.10.2013, 03:41
  • 5
    Мм, Вы не должны искажать less к чему-либо, просто набор $LESS переменная среды к набору флагов Вы всегда хотите обеспечить к less, например. export LESS='-MRq -z-2 -j2’ –  wjv 30.08.2017, 22:28

Другая опция состояла бы в том, чтобы включить цвета и использование 'меньше-r' как Ваш пейджер.

git config --global color.ui true
git config --global core.pager 'less -r'

Это приводит к

[color]
    ui = true
[core]
    pager = less -r

в Вашем ~/.gitconfig

Для получения дополнительной информации посмотрите Pro книга Мерзавца.

61
27.01.2020, 19:26
  • 1
    Используя Мерзавца 2.11, я нашел это color.ui true не работал с пейджером, но color.ui always сделал. Это, возможно, изменилось, так как ответ был отправлен. –  Tom Zych 02.01.2017, 16:18
  • 2
    Эта опция (для включения цветов и использования 'меньше-r' как пейджер по умолчанию) с color.ui true действительно работайте на команды как git -p diff и git -p status (где -p средства передают весь вывод по каналу в $PAGER, по умолчанию это less) даже для довольно старых версий мерзавца (например, Мерзавец 1.7.1). Но Вам все еще нужно color.ui always (который говорит мерзавцу кодам цвета вывода, "даже если вывод является каналом (не tty)") стать окрашенным выводом, когда Вы непосредственно указываете git status | less -r или git diff | less -r. При определении перенаправления вывода явно Вы не будете видеть вывода, после того, как завершенный от пейджера. –  kenichi 19.01.2018, 19:06

просто добавить другую версию на «Использовать меньше -р»:

Используйте переменную среды меньше, чем значение R (Или добавьте R к тому, что он уже есть)

, например, как я использую его в моем .bashrc

  export LESS=-Xr

(X останавливает экран от очистки при меньшем количестве)

11
27.01.2020, 19:26

Также дерево имеет возможность принудительно включать цвета:

tree -C | less -r

И так далее для ls :

ls -lR --color | less -r
16
27.01.2020, 19:26

Я считаю, что окончательным решением является использование unbuffer, который можно найти в пакете expect.

По сути, вы сохраняете git diffцвет, выполняя следующую команду:

unbuffer git --no-pager diff [some_file] | less -r

Вы должны использовать --no-pager, иначе команда зависнет.

Я хотел бы взять на себя ответственность за это, но jcubic сделал это задолго до меня.

1
20.08.2021, 13:33

Теги

Похожие вопросы