Почему быобу только разделяется на вкладки с помощью терминала, а не делает то же самое в консоли / tty?

Я немного использовал Byobu и заметил кое-что странное: я обычно делю Byobu на вкладки, когда использую эмулятор терминала, но когда я в консоли или tty, нажимаю Shift + F2 входит только в тильду (~), а Ctrl + F2 не действует.

Это техническое ограничение? Если да, то как это работает?

3
задан 8 October 2015 в 13:11

2 ответа

Это отличный вопрос!

К сожалению, настоящая консоль TTY в Linux - это не настоящий Xterm , который способен захватывать и поддерживать гораздо больше ключей. прессы.

Я давно подозревал, что Linux TTY можно научить поддерживать клавиши Shift-F, хотя я так и не удосужился попробовать. К сожалению.

0
ответ дан 8 October 2015 в 13:11

Немного предыстории:

Исторически было много «типов терминалов» («терминал» - это клавиатура и текстовый дисплей - xterm - это тип терминала, так же как и консоль), у всех были разные ключи. Если вы посмотрите на свою клавиатуру сейчас, она, вероятно, имеет «клавишу Windows» слева от пробела. У Mac их нет, у них может быть «ключ от Apple» (Google, если вы хотите увидеть это). У некоторых клавиатур была клавиша "Del", когда на большинстве современных клавиатур клавиша Backspace. На некоторых типах терминалов (например, телепринтеры - по сути, они использовали принтер в качестве экрана), вы не можете «удалить» символ. У него были функциональные клавиши? Как много? Какой символ заставит курсор переместиться на один символ назад? Перемещался ли символ «возврат каретки» в начало текущей или следующей строки? Насколько широкими были символы экрана? Можно ли «отображать» цвета текста? Как вы меняете цвета?

Чтобы сделать Unix / Linux максимально удобным для использования, на как можно большем количестве терминалов есть файлы, в которых описано, на что способен каждый терминал, и какие клавиши должны выполнять какие функции (например, когда вы нажимаете клавишу «Del», она может работать как «Del» или «Backspace»). Эти файлы (в Linux) можно найти в / usr / sare / terminfo. Какой из них фактически используется, определяется переменной окружения "TERM". если вы «отобразите $ TERM», вы увидите, что он думает.

Если в определении терминала не указано, что у вас есть определенные ключи, программы не смогут получить эти ключи.

xterm, gnome-терминал использует тип терминала 'xterm', который поддерживает такие функции, как функциональные клавиши; консоль использует (по умолчанию) тип терминала "linux", который не считает, что имеет эти ключи. Так как тип терминала описывает, как сказать, что клавиша была нажата (и сообщает принимающей программе, как ее прослушать, то byobu не может их получить, и поэтому не может воздействовать на них.

почему ". Теперь решение. Насколько я вижу, их 3 (в порядке" от наиболее удобного до наименее удобного "):

  1. Установите другой тип терминала, совместимый с фактический терминал, но с более широкими возможностями. ПРИМЕЧАНИЕ: это должно быть сделано ПЕРЕД запуском byobu, а не внутри него. Моя установка имеет более 1600 типов терминалов, и если вы установите неправильный тип, вы не сможете набрать, нажмите введите или тому подобное. И установка его на что-то другое не обязательно даст вам такую ​​функциональность - например, если вы находитесь на консоли, и вы установили тип терминала «xterm», это не дает вам возможности чтобы изменить размер консоли с помощью мыши, при установке значения «dec» вы не получите клавишу «setup». Однако большинство типов терминалов в основном одинаковы - «a» все равно будет «a». не вижу мусорных символов, но обычно нет. Я обнаружил, что «TERM = linux-vt», кажется, работает довольно хорошо. Все клавиши, которые я пробовал, работали нормально, кроме клавиш Alt-Function и клавиш Alt-direction. Обратите внимание, что клавиши Alt-Function и клавиши Alt-direction обрабатываются консолью напрямую для переключения между виртуальными терминалами.

  2. Используйте альтернативные комбинации клавиш. Все (насколько мне известно) комбинации клавиш, которые недоступны из консоли, имеют альтернативные комбинации клавиш. Например, при установке по умолчанию Control-A, за которым следует%, будет выполнять горизонтальное разделение, а Control-A, за которым следует вертикальная труба ("|"), будет выполнять вертикальное разделение. Control-A, за которым следует знак вопроса, покажет сочетания клавиш. Я думаю, что требуется время, чтобы понять, что вы читаете, но главное - это «-T» (root означает, что он всегда доступен, префикс означает, что вы должны сначала нажать Control-A. Если вы нажимаете «bind-key -T» корень "что-то, вы не сможете больше"! ". Следующий столбец (сразу после таблицы ключей) - это ключ. Последний столбец - это то, что он запускает. Так что если он говорит «префикс bind-ключ -T% split-window -h», то если вы нажмете «префикс» (control-A), а затем «%», он разделит окно (по горизонтали).

    [ 111]
  3. Вы можете запускать эти вещи из командной строки (часто это имеет смысл только внутри byobu), если вы знаете, что byobu называет (и какие опции). Удобно, что это последний столбец на странице сочетаний клавиш. Просто поместите «byobu» перед ним, чтобы сделать это из командной строки. Например, на странице привязок клавиш отображается «bind-key -T prefix% split-window -h», поэтому я могу сделать то же самое, выполнив следующую команду (из bash и т. П.) Непосредственно из byobu: «byobu split-window -h».

0
ответ дан 8 October 2015 в 13:11

Другие вопросы по тегам:

Похожие вопросы: