奇怪的ansi颜色bevahiour在终端

时间:2016-09-05 08:26:41

标签: bash macos

我一直在玩OSX终端中的ansi颜色(bash v.3.2.57,Yosmite)。

一旦我填满终端窗口(如向下滚动时),我遇到了背景颜色行为的问题。

背景颜色将填充右侧白色空间,同时也会跳过"跳过"一条线(见图)。它按我想要的方式工作,直到输出使窗口滚动。如果我使用"清除"命令输出看起来很好,直到输出再次填满终端窗口。

下面的代码只是获取不同的颜色组合(我为这个问题略微截断了它。)

我有一种感觉终端是责怪而不是python,因为输出最初起作用。谁能解释这种行为?欢呼声。

#coloured text in terminal
#ANSI escape sequences

std_txt = '\033[0m'

print('colour test' +'\n')
print('         X in 033[0;Xm')
for x in range(30,35):

    print ''.join(["\033[0;",str(x), 'm']) + 'test' +'\t'  + str(x)

print std_txt +'\n' + ('end')

print('colour test 2' +'\n')
print('         X in 033[0;30;Xm')
for x in range(40,45):

    print ''.join(["\033[0;30;",str(x), 'm']) + 'test' +'\t'  + str(x)

print std_txt +'\n' + ('end')

enter image description here

ps:填写终端窗口或滚动我的意思。 如果你的终端窗口是80x24,填充它将使用24行,并且> 25将使其滚动。对不起,我发现在这个问题上很难解释这一点。

1 个答案:

答案 0 :(得分:1)

问题是你没有在换行前重置颜色,所以终端试图提供帮助。

更改

print ''.join(["\033[0;30;",str(x), 'm']) + 'test' +'\t'  + str(x)

要:

print ''.join(["\033[0;30;",str(x), 'm']) + 'test' +'\t'  + str(x) + std_txt