Обрезать цветные линии после N печатаемых символов - PullRequest
0 голосов
/ 19 октября 2019

Я живу в tmux сеансе. При серфинге и набивании веток git я обычно отслеживаю свою недавнюю историю в боковой панели с псевдонимом, который расширяется до:

watch -cn 0.5 'git log --graph --oneline --all --color=always --decorate'

Проблема : длинные строки переносятся иразбить прекрасный цветной график, дестабилизируя меня!

Обходные пути :

  • плохой способ - обрезать неокрашенный git-log вывод:

    watch -cn 0.5 'git log --graph --oneline --all --decorate | cut -c -$COLUMNS'
    

    но мне абсолютно необходимы цвета, чтобы не потерять ГОЛОВУ;

  • хуже того, чтобы сохранить цвета и позволить cut подсчитывать непечатные символы тоже:

    watch -cn 0.5 'git log --graph --oneline --all --color=always --decorate | cut -c -$COLUMNS'
    

    , что означает, что строки плохо обрезаются, а иногда даже соединяются.

Вопрос : есть ли какой-либо стандартный инструмент, который может обрезать строки послеN печатных символов?

Я бы избегал самописного cut -подобного решения, в основном из-за переносимости.

1 Ответ

1 голос
/ 21 октября 2019

Решение найдено:

alias gw='watch -cn 0.5 "git log --graph --oneline --all --color=always --decorate | grep -Eo \"^(([[:cntrl:]]\[[0-9;]{,4}m)*[[:print:]]){,\$COLUMNS}\""'
...