Какова сложность во время выполнения оператора switch?

Клеммы были аппаратными устройствами, которые состояли из клавиатуры и устройства вывода (первоначально печатный принтер, а затем монитор CRT). На большом компьютере может быть подключено несколько удаленных терминалов. Каждый терминал имеет протокол для эффективной связи с компьютером, для терминалов на основе ЭЛТ это включает в себя наличие специальных «контрольных последовательностей» для изменения положения курсора, удаления частей текущей строки / экрана, переключения в альтернативный полноэкранный режим. ..

Терминальный эмулятор - это приложение, эмулирующее один из этих старых терминалов. Он позволяет выполнять такие функции, как позиционирование курсора, установка цветов переднего плана и фона, ... Терминальные эмуляторы пытаются эмулировать какой-то конкретный протокол терминалов, но каждый имеет свой собственный набор причуд и отклонений.

Unix-системы имеют базы данных описывая терминалы и эмуляторы терминалов, поэтому приложения абстрагируются от конкретного терминала (или эмулятора терминала). Старшая база данных - termcap(5), а terminfo(5) - более новая база данных. Эти базы данных позволяют приложениям запрашивать возможности используемого терминала. Возможности могут быть логическими, числовыми или даже строковыми, например: если определенный тип терминала имеет / поддерживает ключ F12, он будет иметь возможность «key_f12» (long terminfo name), «kf12» (short terminfo name), «F2» (имя termcap), описывающее строку, которую создает ключ. Попробуйте: tput kf12 | od -tx1.

Поскольку программирование напрямую с возможностями может быть громоздким, приложения обычно используют библиотеку более высокого уровня, такую ​​как curses / ncurses, slang и т. Д. ...

Существует специальная переменная среды, называемая TERM, которая сообщает приложениям, с каким типом терминала они разговаривают. Для получения наилучших результатов эта переменная должна быть установлена ​​на точный тип терминала, если она существует в базе данных. Это просто говорит приложению, что точное понимание протокола и протокола делает терминал понятным. Изменение переменной TERM не изменяет тип терминала, это просто изменяет тип терминала, с которым, по мнению приложения, разговаривает.

Все, что сказано, Ctrl+arrow - это поведение xterm (в зависимости от конфигурации ), который вообще не отражается в базе данных terminfo / termcap, поэтому большинство приложений не будут знать об этом. В любом случае, ваш эмулятор терминала (в вашем случае pyte) поддерживает его или нет.

Предполагая, что ваше основное приложение - bash или какое-либо другое приложение, использующее библиотеку readline вы можете избежать использования readline backward-word (Meta-b / Alt-b / ESC b по умолчанию, настраиваемого в inputrc).

37
задан Fragsworth 14 December 2010 в 18:34
поделиться