Color -закодировано git diff -> less неправильно отображает цвет

alias 'gsi=<<eof grep --color'

Псевдоним будет работать так же, как замена текста в препроцессоре, где замена снова интерпретируется как шелл-код.

Ваш не работал, как у вас "$1". С заменой gsi file.txtна cat <<eof | grep --color "$1" file.txtоболочка продолжает интерпретировать эту командную строку, и $1в этот момент является первым позиционным параметром оболочки, который, вероятно, пуст, если только вы не сделали set somethingзаранее. Итак, вам нужно удалить "$1"здесь. Вы также можете удалить UUOC.

gsi() { cat <<eof | grep --color "$1" ; }

неверно с точки зрения синтаксиса, так как после строки cat <<eofотсутствует строка eof.

4
24.06.2021, 11:58
2 ответа

Как terdon говорит , less’ поведение по умолчанию заключается в отображении эквивалентов специальных символов в стиле cat -v. less -Rизменит это так, что управляющие последовательности будут передаваться всему, что обрабатывает дисплей.

Значения по умолчанию для

lessможно указать с помощью переменной окружения LESS, например, .

export LESS=-R

gitимеет собственное представление о том, что должен делать его пейджер. Если переменная окружения LESSне установлена, она будет установлена ​​в FRXпри вызове less, что соответствует ожиданиям git; еслиLESSустановлено , оно останется без изменений, что может привести к нечитаемому выводу, если LESSне включает -R.

Существует два способа настройки lessдля использования с git:: либо настроить глобально с помощью переменной LESS, либо изменить настройку core.pager, , например.

git config --global core.pager "less -R"
7
28.07.2021, 11:22

Это поведение по умолчанию less. Используйте less -R, если вы хотите увидеть цветной вывод (из man less):

.
   -R or --RAW-CONTROL-CHARS
          Like -r, but only ANSI "color" escape sequences and OSC  8  hy‐
          perlink  sequences  are  output  in "raw" form.  Unlike -r, the
          screen appearance is maintained correctly, provided that  there
          are  no  escape sequences in the file other than these types of
          escape sequences.  Color escape sequences  are  only  supported
          when  the  color  is changed within one line, not across lines.
          In other words, the beginning of each line  is  assumed  to  be
          normal  (non-colored),  regardless  of  any escape sequences in
          previous lines.  For the purpose of keeping track of screen ap‐
          pearance,  these  escape  sequences are assumed to not move the
          cursor.

Вероятно, вы привыкли к системам, в которых lessнастроено как псевдоним для less -R, поэтому это застало вас врасплох.

4
28.07.2021, 11:22

Теги

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