Ответ 1
Почему это не интерпретирует escape-символы, возвращаемые git -prompt_info и другие правильно?
Ответ скорее всего на то, что multi-term
просто не готов принять эти escape-последовательности в этом формате по любой причине. Это может быть проблема конфигурации, ошибка или преднамеренное. Установка режима для приема цветов, т.е. TERM=xterm-256color
, улучшает ситуацию, поскольку затем принимает цветовые escape-последовательности, аналогичные стандартным форматам, используемым среди эмуляторов терминала, например:
RED='\033[0;31m'
NC='\033[0m' # No Color
echo "I ${RED}love${NC} Stack Overflow\n" # this output IS NOT interpreting the escapes
echo -e "I ${RED}love${NC} Stack Overflow\n" # this output IS interpreting them
значимая часть - это цвет [0;31m
для цвета, на который ссылается связанный поток в "Обновлении 2" вашего другого вопроса, спрашивающий, почему строки печатаются, начиная с 4m
, который является частью этого escape цвета последовательность.
Подробнее info с соответствующей выдержкой:
Таким образом, ваш эмулятор терминала понимает цвета. Ваш терминальный эмулятор понимает, что
\033[0;36m
является голубым, а другой терминальный эмулятор может использовать совершенно другой набор символов для голубого (хотя никакой здравомыслящий эмулятор терминала не будет выставлять напоказ стандарт и сделайте это). Это причинаtput
. Когда вы запуститеtput setaf 6
,tput
будет искать коды выхода вашего терминала для цвет 6 (голубой) и выводить этот код выхода.
Я подозреваю, в вашем другом вопросе, что alt + b и alt + f не работают в вашем другом вопросе из-за того, что счетчик ширины терминала отключен из-за неправильной интерпретации из этих управляющих последовательностей, которые должны быть непечатаемыми или нулевыми. Я не много перепутал с multi-term
, но решение может включать использование tput
или подобное, чтобы позволить ему правильно понимать escape-последовательности.