打印出包括名称说明的terminfo条目吗?

时间:2018-12-20 06:20:36

标签: terminal terminfo

打印terminfo条目(例如,对于我当前的终端:xterm-256color)最直接的方法是什么,其中包括terminfo手册页中每个名称的简短说明?

我知道如何使用以下命令为我的终端打印出terminfo条目(每行一个名称):

infocmp -1

生成:

#   Reconstructed via infocmp from file: /usr/share/terminfo/78/xterm-256color
xterm-256color|xterm with 256 colors,
    am,
    bce,
    ccc,
    km,
    mc5i

Etc.

我可以在terminfo手册页中手动查找每个名称的描述(例如ccc表示“终端可以重新定义现有颜色”),但是有一种方法可以显示每个名称的描述而不必查找每个名称手动一个吗?

例如,我想看到这样的东西:

xterm-256color|xterm with 256 colors
am         terminal has automatic margins
bce        screen erased with background color
ccc        terminal can redefine existing colors
km         Has a meta key (i.e., sets 8th bit)
mc5i       printer will not echo on screen

Etc.

infocmp的输出始终是定界的,并且相对容易解析,但是在terminfo手册页上列出了终端功能(具有变化的列宽和跨越多行的capname描述)的表却没有。如果是这样,生成我描述的输出将更加简单。也许存在terminfo手册页中内容的替代来源,该来源在编程上更易于操作?

我正在运行GNU bash,版本4.4.23(1)-发行版(x86_64-apple-darwin18.0.0)。

1 个答案:

答案 0 :(得分:0)

可能不是。实际上,manual page和其他文件是使用scripts中的data file构造的,但是没有 安装

自生成以来,您可以编写一个脚本来提取信息,尽管您会发现使用 bash 脚本来进行此操作非常困难(perl是,awk是, sed ...也许)。这是一小部分文本(已安装在您的系统上):

.TS H
center expand;
c l l c
c l l c
lw25 lw6 lw2 lw20.
\fBVariable     Cap-    TCap    Description\fR
\fBBooleans     name    Code\fR
auto_left_margin        bw      bw      T{
cub1 wraps from column 0 to last column
T}
auto_right_margin       am      am      T{
terminal has automatic margins
T}
back_color_erase        bce     ut      T{
screen erased with background color
T}
can_change      ccc     cc     

您始终可以使用 infocmp 列出 long 名称,并且顺序与(默认) short 相同。 em>名称,可以将它们组合起来。但是,长名称列表按字母顺序排序(布尔,数字和字符串组成的组,如短名称),而短名称默认情况下按顺序排列,以匹配SVr4 terminfo数据。您可能会看到类似这样的内容:

xterm-256color|xterm with 256 colors
        am      auto_right_margin
        bce     back_color_erase
        ccc     backspaces_with_bs
        km      can_change
        mc5i    eat_newline_glitch
        mir     has_meta_key
        msgr    move_insert_mode
        npc     move_standout_mode
        xenl    no_pad_char
        colors  prtr_silent
        cols    columns 
        it      init_tabs 
        lines   lines
        pairs   max_colors
        acsc    max_pairs
        bel     acs_chars  
        blink   back_tab
        bold    bell

实际上,ncurses具有允许对名称进行排序的选项,因此您可以(几乎)使用 -sl 选项匹配右列的顺序。您可能会看到类似这样的内容:

xterm-256color|xterm with 256 colors
        am      auto_right_margin
        bce     back_color_erase
        ccc     backspaces_with_bs
        xenl    can_change
        km      eat_newline_glitch
        mir     has_meta_key
        msgr    move_insert_mode
        npc     move_standout_mode
        mc5i    no_pad_char
        cols    prtr_silent
        it      columns
        lines   init_tabs
        colors  lines
        pairs   max_colors
        acsc    max_pairs
        cbt     acs_chars
        bel     back_tab
        cr      bell

那是“几乎” ,因为列未将 xenl eat_newline_glitch 对齐,因为ncurses具有 backspaces_with_bs 的内部名称,通常不会显示。更改ncurses源以显示:

xterm-256color|xterm with 256 colors
        am      auto_right_margin
        bce     back_color_erase
        OTbs    backspaces_with_bs
        ccc     can_change 
        xenl    eat_newline_glitch