Предполагается, что \e
вставляет символ ES C (код ASCII 27), но его нет в стандарте C, только в некоторых нестандартных расширениях.
Вы можете использовать \33
вместо 1 . (33 - это восьмеричное представление десятичного числа 27.)
1: Это будет работать нормально (и является кратчайшим путем) для обычных управляющих последовательностей ANSI, поскольку следующий символ всегда будет [
. Но в случае, если вам когда-либо понадобится использовать символ ES C в других обстоятельствах, обратите внимание, что вам понадобится \033
в случае, если за ним следует di git между 0 и 7, потому что в противном случае следующий di git ошибочно считалось бы частью восьмеричного числа. Как dxiv упоминал в комментариях, это может иметь место с некоторыми escape-последовательностями VT100.