在python脚本中突破显示的pygments管道更少

时间:2013-01-29 00:02:03

标签: python less pygments

from pygments.lexers import RstLexer
from pygments.formatters import TerminalFormatter
from pygments import highlight

output = highlight(source, RstLexer(), TerminalFormatter())

p = subprocess.Popen('less', stdin=subprocess.PIPE)
p.stdin.write(output)
p.stdin.close()
p.wait()

当我只是print output时 - 一切正常,但是管道突破突出显示...... 有什么想法吗?

示例:

example

1 个答案:

答案 0 :(得分:3)

那是less的错,而不是Python的错。使用less开关运行-R

  

-R--RAW-CONTROL-CHARS

     

-r类似,但只有ANSI“颜色”转义序列以“原始”形式输出。与-r不同,   在大多数情况下,屏幕外观保持正确。 ANSI“颜色”转义序列是以下形式的序列:

ESC [ ... m
     

其中“...”为零个或多个颜色指定字符用于跟踪                 屏幕外观,ANSI颜色转义序列被假定为不移动光标。你可以减少                 认为“m”以外的字符可以通过设置环境来结束ANSI颜色转义序列                 将LESSANSIENDCHARS变量到可以结束颜色转义序列的字符列表。你可以                 尽量少考虑标准之外的字符可能出现在ESC和m之间                 将环境变量LESSANSIMIDCHARS设置为可以出现的字符列表。