tmux
(như màn hình GNU) hoạt động bằng cách dịch các tính năng của thiết bị đầu cuối thực tế của bạn sang thiết bị đầu cuối bên trong (thường khác nhau). Họ làm điều này để cho phép bạn kết nối một phiên trên các thiết bị đầu cuối khác nhau cùng một lúc hoặc tại các thời điểm khác nhau .
Khi nó hoạt động tốt, bạn sẽ thấy văn bản "tương tự" bất kể bạn đang kết nối từ đâu.
Không phải tất cả các thiết bị đầu cuối hỗ trợ dim
. Trên thực tế, hầu hết không. Cơ sở dữ liệu đầu cuối có 121 lần xuất hiện dim
so với 1514 mô tả thiết bị đầu cuối.
Khi screen
được bắt đầu vào khoảng năm 1990, các nhà phát triển của nó đã chọn bỏ qua tính năng đó và thay vào đó cung cấp những thứ hữu ích nhất. Họ đã thiết kế chương trình để lưu trữ, đối với mỗi ô hàng / cột, các thuộc tính video mà các chương trình termcap có khả năng sử dụng. Mã nguồn định nghĩa những điều này:
#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 */
nhưng cả hai screen
và chỉ tmux
sử dụng các tính năng bên trong này nếu thiết bị đầu cuối bên ngoài hỗ trợ chúng, cũng như được cung cấp trong mô tả thiết bị đầu cuối bên trong .
OSX gói một bản sao của ncurses và cơ sở dữ liệu đầu cuối . Trong khi bạn có thể cài đặt MacPorts hoặc homebrew và nhận được sau phiên bản, những gì OSX có là ncurses 5.7.20081102
. Nếu bạn sử dụng infocmp
để hiển thị các mô tả thiết bị đầu cuối, bạn sẽ thấy một cái gì đó như thế này:
$ 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,
Không có dim
ở đó. Trong ncurses, điều này đã được thêm vào tháng 4 năm 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)
Tương tự như vậy, bạn sẽ không nhìn thấy dim
trong xterm-256color. Điều đó đã được thêm vào tháng 6 năm 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
Cái cách mà dim
được sử dụng trong Terminal.app bên ngoài không được chỉ định, nhưng có khả năng được mã hóa cứng (không sử dụng mô tả thiết bị đầu cuối). Nhưng screen
và tmux
không biết làm thế nào các chuỗi thoát đi vào, nhưng biết rằng dim
nó không được đề cập trong mô tả thiết bị đầu cuối, do đó không được hỗ trợ.
Bạn có thể cập nhật cơ sở dữ liệu terminfo của mình để thêm dim
tính năng này vào các mô tả thiết bị đầu cuối này, bằng cách sử dụng infocmp
và tic
các tiện ích:
sử dụng infocmp
để có được các mô tả thiết bị đầu cuối hiện có cho xterm-256color
và screen-256color
. Điều này chỉ hiển thị đầu tiên; tất nhiên bạn sẽ lặp lại quá trình cho mô tả thứ hai:
infocmp -1x xterm-256color> foo
chỉnh sửa tệp văn bản được tạo bởi infocmp
, thêm dòng này
dim=\E[2m,
và thay thế dòng bằng sgr=
dòng này:
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,
sử dụng tic
để thay thế mô tả thiết bị đầu cuối:
sudo tic -x foo
Lưu ý: Điểm của câu hỏi là hỏi tại sao điều này xảy ra; Nicholas Marriott cung cấp thông tin về cách giải quyết vấn đề.
echo $TERM
cả trong và ngoài tmux và thêm đầu ra cho câu hỏi. Ra khỏi đỉnh đầu, tôi đoán rằng giá trị trong thiết bị đầu cuối bên dưới cần phải-256color
được thêm vào;tmux
chọn lên trên này.