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 dim
1514 Terminalbeschreibungen.
Als screen
es 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 screen
und tmux
verwenden 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 infocmp
die 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 dim
da. 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 dim
in 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, dim
wie in der externen Terminal.app verwendet wird, ist nicht angegeben, aber wahrscheinlich fest codiert (ohne Verwendung der Terminalbeschreibung). Aber screen
und tmux
wissen nicht, wie die Escape-Sequenzen eingehen, aber wissen, dass dim
dies in der Terminalbeschreibung nicht erwähnt wird und daher nicht unterstützt wird.
Sie können Ihre terminfo-Datenbank aktualisieren, um dim
diese Terminalbeschreibungen mithilfe der Dienstprogramme infocmp
und hinzuzufügen tic
:
Verwenden Sie infocmp
diese Option, um die vorhandenen Terminalbeschreibungen für xterm-256color
und 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 infocmp
und 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 tic
diese 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 $TERM
tmux 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-256color
Mehrwert haben muss.tmux
greift dies auf.