一些 Mercurial 命令会根据终端的宽度以不同的方式格式化输出。当我只需要查看输出时,这很方便,但当输出不是发送到终端而是发送到管道或文件时,这非常不方便。
有没有什么方法可以让我覆盖终端宽度并让 Mercurial 格式化针对我在命令行上指定的宽度进行优化的输出?
下面是我遇到的问题的一个例子:
$ hg log --stat -r 4210 | wc
10 37 375
$ hg log --stat -r 4210 | wc
10 37 375
$ hg log --stat -r 4210 | wc
10 37 512
$ hg log --stat -r 4210 | wc
10 37 512
$
我在执行这一序列命令的过程中更改了窗口的大小,Mercurial 开始产生不同的输出。我想要的是这样的:
$ hg log --width 79 --stat -r 4210 | wc
10 37 374
$
我可以以某种方式指定我希望输出格式化,好像终端宽度为 79 个字符,而不管终端的实际宽度。
答案1
可以在以下位置找到以下功能/usr/lib/python2.7/dist-packages/mercurial/ui.py
:
def termwidth(self):
'''how wide is the terminal in columns?
'''
if 'COLUMNS' in os.environ:
try:
return int(os.environ['COLUMNS'])
except ValueError:
pass
return util.termwidth()
由此显然可以知道,答案是COLUMNS=79
在命令前面简单地写入hg
即可实现所需的结果:
$ COLUMNS=79 hg log --stat -r 4210 | wc
10 37 374