2

Я заливаюсь в коробку с центосом из коробки с убунту. Я продолжаю видеть è когда набираю alt+h (он же M-h). Я хочу использовать эту комбинацию клавиш в привязках tmux, но она не работает, потому что tmux не распознает символы utf8. У меня нет этой проблемы на моей коробке Ubuntu.

Мое дикое предположение, что это как-то связано с языком. Вот мой вывод на CentOS:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

Я заметил, что в Ubuntu в выводе локали есть дополнительная строка LANGUAGE=en_US:en .

Какие-либо предложения?

2 ответа2

0

Отключение мета-режима является частью ответа. xterm имеет более одной настраиваемой функции, связанной с этим. Часто задаваемые вопросы по ncurses. Alt-ключи не работают в bash . По сути, есть два понятия о том, что такое мета-режим :

  • xterm и база данных терминала (terminfo) документируют использование мета-ключа в качестве своего рода модификатора сдвига, устанавливая восьмой бит входного байта. В руководстве xterm есть некоторые примечания по теме в разделе для ресурса eightBitInput . Руководство terminfo более лаконично:

Если терминал имеет «мета-ключ», который действует как клавиша Shift, устанавливая 8-й бит любого передаваемого символа, этот факт можно указать с помощью km. В противном случае программное обеспечение будет предполагать, что 8-й бит равен четности, и обычно он очищается. Если существуют строки для включения и выключения этого «мета-режима», они могут быть заданы как smm и rmm.

  • bash говорит, что ожидает escape-символа для префикса символа, к которому применяется метаключ. (Нет никаких сведений о том, как Bash решил это, и что это был мета- ключ, но, по крайней мере, он восходит к началу 1990-х годов).

Таким образом, проблема в том, что xterm реализовал управляющую последовательность для включения / выключения мета-режима, и у bash были некоторые ожидания относительно того, что с ним делать. Странно то, что независимо от того, к чему был подготовлен терминал bash, не было замечено (это, конечно, не было xterm). Однако на тот случай, если bash когда-либо снова увидит этот терминал, он по умолчанию включит мета-режим для любого терминала, который его реализует.

0
tput rmm

Кажется, чтобы решить мою проблему. В основном. Но я не совсем понимаю, почему.

Когда я запускаю infocmp на моем окне Centos , я вижу, что rmm и smm имеют значения, но они не на моем Ubuntu. Из справочной страницы terminfo я узнал, что rmm «отключает мета-режим», а smm «включает мета-режим».

Также, похоже, не работает добавление tput rmm в мой .bashrc. Я должен вручную запустить его из моей оболочки Centos. Опять не понимаю почему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .