tmux(wie der GNU-Bildschirm) übersetzt die Funktionen Ihres tatsächlichen Terminals in ein (häufig anderes) internes Terminal. Sie tun dies, damit Sie eine Sitzung auf verschiedenen Terminals gleichzeitig oder zu verschiedenen Zeiten verbinden können .
Wenn das gut funktioniert, sehen Sie den "gleichen" Text, unabhängig davon, von wo aus Sie eine Verbindung herstellen.
Nicht alle Terminals unterstützen dim. Tatsächlich tun es die meisten nicht. Die Terminaldatenbank enthält 121 Vorkommen von dim1514 Terminalbeschreibungen.
Als screenes um 1990 begonnen wurde, entschieden sich die Entwickler, diese Funktion zu ignorieren und stattdessen die nützlichste bereitzustellen. Sie entwarfen das Programm, um für jede Zeilen- / Spaltenzelle die Videoattribute zu speichern, die Termcap- Programme wahrscheinlich verwenden würden. Der Quellcode definiert diese:
#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 */
aber beide screenund tmuxverwenden diese internen Funktionen nur, wenn das externe Terminal sie unterstützt und in der Beschreibung des internen Terminals angegeben ist.
OSX bündelt eine Kopie von ncurses und der Terminaldatenbank . Während Sie MacPorts oder Homebrew und eine installieren könnte später Version, was OSX hat ist ncurses 5.7.20081102. Wenn Sie infocmpdie Terminalbeschreibungen anzeigen, wird Folgendes angezeigt:
$ 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,
Da ist kein dimda. In ncurses wurde dies im April 2015 hinzugefügt :
# 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)
Ebenso würden Sie dimin xterm-256color nicht sehen . Das wurde im Juni 2014 hinzugefügt :
# 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
Die Art und Weise, dimwie in der externen Terminal.app verwendet wird, ist nicht angegeben, aber wahrscheinlich fest codiert (ohne Verwendung der Terminalbeschreibung). Aber screenund tmuxwissen nicht, wie die Escape-Sequenzen eingehen, aber wissen, dass dimdies in der Terminalbeschreibung nicht erwähnt wird und daher nicht unterstützt wird.
Sie können Ihre terminfo-Datenbank aktualisieren, um dimdiese Terminalbeschreibungen mithilfe der Dienstprogramme infocmpund hinzuzufügen tic:
Verwenden Sie infocmpdiese Option, um die vorhandenen Terminalbeschreibungen für xterm-256colorund abzurufen screen-256color. Dies zeigt nur den ersten; Sie würden den Vorgang natürlich für die zweite Beschreibung wiederholen:
infocmp -1x xterm-256color> foo
Bearbeiten Sie die von erstellte Textdatei infocmpund fügen Sie diese Zeile hinzu
dim=\E[2m,
und Ersetzen der Zeile sgr=durch diese Zeile:
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,
Verwenden Sie ticdiese Option, um die Terminalbeschreibung zu ersetzen:
sudo tic -x foo
Hinweis: Der Punkt der Frage war die Frage, warum dies geschieht. Nicholas Marriott lieferte Informationen zur Umgehung des Problems.
echo $TERMtmux aus und aus und fügen Sie die Ausgabe der Frage hinzu. Auf den ersten Blick würde ich vermuten, dass der Wert im zugrunde liegenden Terminal einen-256colorMehrwert haben muss.tmuxgreift dies auf.