在 N 个可打印字符后截断彩色线条
Truncate colored lines after N printable chars
我住在一个 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
的解决方案,主要是因为可移植性。
找到的解决方案:
alias gw='watch -cn 0.5 "git log --graph --oneline --all --color=always --decorate | grep -Eo \"^(([[:cntrl:]]\[[0-9;]{,4}m)*[[:print:]]){,$COLUMNS}\""'
我住在一个 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
的解决方案,主要是因为可移植性。
找到的解决方案:
alias gw='watch -cn 0.5 "git log --graph --oneline --all --color=always --decorate | grep -Eo \"^(([[:cntrl:]]\[[0-9;]{,4}m)*[[:print:]]){,$COLUMNS}\""'