Распечатать запись terminfo, включая описания заглавных букв? - PullRequest
0 голосов
/ 20 декабря 2018

Какой самый простой способ распечатать запись terminfo (например, для моего текущего терминала: xterm-256color), которая включает краткие описания каждого capname со страницы руководства 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 голосов
/ 21 декабря 2018

Наверное, нет.На самом деле, страница руководства и другие файлы создаются с использованием сценариев из файла данных , но это не установлен .

Поскольку он сгенерирован, вы можете написать скрипт для извлечения информации, хотя вам будет сложно сделать это как bash скрипт (perl yes,ах да, седь ... может быть).Вот небольшой фрагмент текста (который установлен в вашей системе):

.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,и если бы порядок был таким же, как для (по умолчанию) коротких имен, вы могли бы объединить их.Но список длинных имен отсортирован в алфавитном порядке (в группах для логических значений, чисел и строк, таких как короткие имена), в то время как короткие имена по умолчанию упорядочены в соответствии с данными terminfo SVr4.Вы можете увидеть что-то вроде этого:

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
...