0

我正在寻找 $term/$TERM 的正确设置,以便在 XQuartz 的窗口中使用。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,一些手册页,嗯,还有一些我看到过这个问题的东西。)

非常感谢你的帮忙!

版本:XQuartz 2.7.11;OSX 10.13.4;Perl v5.26.2;Perldoc v3.28

4

1 回答 1

0

简而言之:问题可能在于您的寻呼机(例如,less)是如何被调用的。

long: perldoc 通过Pod::Text::ColorTerm::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.)

如果您碰巧设置PAGERless,那么它将使用该值。但less除非您在命令中添加选项,否则将显示转义字符,如示例中所示,例如-R. 这样做PAGER可能会干扰其他应用程序,因此perldoc首先查找它自己的变量PERLDOC_PAGER

于 2018-07-08T20:50:50.283 回答