我正在寻找在XQuartz的Windows中使用的$ term / $ TERM的正确设置。 xterm和vt100都无法正常工作。它们确实可以显示纯文本,但是当我尝试使用一些非纯文本时,它们会遇到麻烦。
手册页通常显示正常,但有时会出现问题。 (不幸的是,我暂时无法想到一个好的坏榜样。)
现在,当我尝试显示POD时会看到此消息。这是一些简单的pod和一些perldoc,它们使用不同的$ term设置运行:
iolaire(100)> cat podtest
#!/usr/bin/env perl
1;
=pod
=head1 NAME
B<podtest> - podtest for pod output on shell
=head1 SYNOPSIS
podtest
=head1 DESCRIPTION
B<podtest> is pod test.
=cut
iolaire(101)> set term=vt100
iolaire(102)> perldoc podtest
2ESC[1mNAME2ESC[0m
2ESC[1mpodtest2ESC[0m - podtest for pod output on shell
2ESC[1mSYNOPSIS2ESC[0m
podtest
2ESC[1mDESCRIPTION2ESC[0m
2ESC[1mpodtest2ESC[0m is pod test.
iolaire(103)> set term=xterm
iolaire(104)> perldoc podtest
iolaire(105)> perldoc podtest | cat -v
^[[1mNAME^[[0m
^[[1mpodtest^[[0m - podtest for pod output on shell
^[[1mSYNOPSIS^[[0m
podtest
^[[1mDESCRIPTION^[[0m
^[[1mpodtest^[[0m is pod test.
iolaire(106)>
我在tcsh和bash中遇到了同样的问题。
Perldoc以前可以在OSX的xterms上正常工作。几年前,这种行为开始了,我终于对它感到厌烦,并试图使其再次正常工作。 (Perldoc,一些手册页和um,还有其他一些我已经看到此问题的东西。)
非常感谢您的帮助!
版本:XQuartz 2.7.11; OSX 10.13.4; Perl v5.26.2; Perldoc v3.28
答案 0 :(得分:0)
简短:问题可能在于如何调用您的寻呼机(例如, less )。
long:perldoc通过Pod::Text::Color和Term::ANSIColor使用硬编码的转义符,例如,
# Make level two headings bold.
sub cmd_head2 {
my ($self, $attrs, $text) = @_;
$text =~ s/\s+$//;
$self->SUPER::cmd_head2 ($attrs, colored ($text, 'bold'));
}
# Fix the various formatting codes.
sub cmd_b { return colored ($_[2], 'bold') }
sub cmd_f { return colored ($_[2], 'cyan') }
sub cmd_i { return colored ($_[2], 'yellow') }
# Output any included code in green.
sub output_code {
my ($self, $code) = @_;
$code = colored ($code, 'green');
$self->output ($code);
}
并且由于所有活动部件都被隐藏在perl库中,因此您可以做很多工作来打破这一点。与其他几个perl模块不同,该模块似乎忽略了 TERM
的值。
另一方面,perldoc用于 pager 。手册页上写着
"perldoc" will use, in order of preference, the pager defined in
"PERLDOC_PAGER", "MANPAGER", or "PAGER" before trying to find a pager
on its own. ("MANPAGER" is not used if "perldoc" was told to display
plain text or unformatted pod.)
如果您碰巧将 PAGER
设置为 less
,则它将使用该值。但是less
将显示示例中的转义字符,除非您在命令中添加了一个选项,例如 -R
。对 PAGER
执行此操作可能会干扰其他应用程序,因此perldoc
首先查找其自己的变量 PERLDOC_PAGER
。>