Делает rpm
/yum
все еще работа? rpm -q kernel
должен сказать, если это x86_64
в конце это - установка на 64 бита.
Добавьте следующий код в ~ / .tmux.conf
.
set -sa terminal-overrides ",*:dim=\\E[2m"
Application.app , похоже, не имеет директивы dim
(см. Номер 24).
Terminal 0: xterm-256color [references=1, flags=0x1]:
1: acsc: (string) ``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~
0: AX: (flag) true
2: bel: (string) \007
...
23: dch1: (string) \033[P
24: dim: [missing]
25: dl: (string) \033[%p1%dM
Это результат выполнения команды tmux showmsgs -T
запустить внутри Tmux .
С другой стороны, Terminal.app в любом случае «отправляет» dim
(не знаю, как или почему ), так как он работает, как показано на картинке выше.
Добавление отсутствующей директивы dim
( волшебным образом ) решает проблему.
tmux
(как и GNU screen) работает, переводя функции вашего фактического терминала в (часто другой) внутренний терминал. Они делают это для того, чтобы вы могли подключить сеанс на разных терминалах одновременно или в разное время.
Когда это работает хорошо, вы будете видеть "тот же" текст независимо от того, откуда вы подключаетесь.
Не все терминалы поддерживают dim
. На самом деле, большинство из них не поддерживают. База данных терминалов содержит 121 вхождение dim
в 1514 описаниях терминалов.
Когда в 1990 году была создана программа screen
, ее разработчики предпочли проигнорировать эту возможность и вместо этого предоставить наиболее полезную. Они разработали программу, чтобы хранить для каждой ячейки строки/столбца видеоатрибуты, которые termcap программы, скорее всего, будут использовать. В исходном коде они определены:
#define ATTR_DI 0 /* Dim mode */
#define ATTR_US 1 /* Underscore mode */
#define ATTR_BD 2 /* Bold mode */
#define ATTR_RV 3 /* Reverse mode */
#define ATTR_SO 4 /* Standout mode */
#define ATTR_BL 5 /* Blinking */
но и screen
, и tmux
используют эти внутренние возможности, только если внешний терминал поддерживает их, а также предусмотрены в внутреннем описании терминала.
OSX включает в себя копию ncurses и базу данных терминала. Хотя вы можете установить MacPorts или homebrew и получить более позднюю версию, в OSX есть ncurses 5.7.20081102
. Если вы используете infocmp
, чтобы показать описания терминала, вы увидите что-то вроде этого:
$ infocmp screen-256color
# Reconstructed via infocmp from file: /usr/share/terminfo/73/screen-256color
screen-256color|GNU Screen with 256 colors,
am, km, mir, msgr, xenl,
colors#256, cols#80, it#8, lines#24, ncv#3, pairs#32767,
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
il=\E[%p1%dL, il1=\E[L, ind=^J, initc@, is2=\E)0, kbs=^H,
kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m,
rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smcup=\E[?1049h, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g,
Там нет dim
а. В ncurses это было добавлено в апреле 2015 года:
# 2015-04-22
# + add 'dim' capability to screen entry (report by Leonardo B Schenkel)
# + add several key definitions to nsterm-bce to match preconfigured
# keys, e.g., with OSX 10.9 and 10.10 (report by Leonardo B Schenkel)
Точно так же вы не увидите dim
в xterm-256color. Это было добавлено в июне 2014 года:
# 2014-06-14
# + modify sgr for screen.xterm-new to support dim capability -TD
# + add dim capability to nsterm+7 -TD
# + cancel dim capability for iterm -TD
# + add dim, invis capabilities to vte-2012 -TD
# + add sitm/ritm to konsole-base and mlterm3 -TD
Способ использования dim
во внешнем Terminal.app не указан, но, вероятно, жестко закодирован (не используется описание терминала). Но screen
и tmux
не знают как приходят управляющие последовательности, но знают, что dim
не упоминается в описании терминала, следовательно, не поддерживается.
Вы можете обновить свою базу данных terminfo, чтобы добавить функцию dim
в эти описания терминалов, используя утилиты infocmp
и tic
:
используйте infocmp
, чтобы получить существующие описания терминалов для xterm-256color
и screen-256color
. Здесь показано только первое; для второго описания вы, конечно, повторите процесс:
infocmp -1x xterm-256color > foo
отредактируйте текстовый файл, созданный infocmp
, добавив эту строку
dim=\E[2m,
и заменив строку с sgr=
на эту строку:
sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
используйте tic
для замены описания терминала:
sudo tic -x foo
Примечание: Суть вопроса заключалась в том, чтобы спросить почему это происходит; Николас Мариотт предоставил информацию о том, как обойти проблему.