질문
내 Mac에서 (10.11)멀티플렉서-ed 색상이 올바르게 표시 되지 않아 dim
짜증이 납니다.
아래 이미지에서는 제출 작성자의 이름이 로 표시되어야 합니다 dim white
. 이는 다음과 같은 상황에서 잘 작동합니다.터미널 프로그램하지만 범위에 포함되지 않음멀티플렉서.
누구든지 이것을 디버깅하는 방법을 알고 있습니까?
나는 이것이 변수와 관련이 있다고 생각 $TERM
하지만 어디서부터 시작해야 할지 모르겠습니다.
존재하다터미널 프로그램 $TERM
으로 설정되어 있습니다 xterm-256color
.
존재하다멀티플렉서 $TERM
으로 설정되어 있습니다 screen-256color
.
내 .tmux.conf
안에는 set -g default-terminal "screen-256color"
. xterm-256color
, 이내에멀티플렉서, 충돌하다윔dim
어떤 방식으로든 배경색이 변경되지만 동작이 바뀌지는 않습니다 .
추가 정보
하나 열었어요문제는멀티플렉서GitHub 저장소;답변이 제공되었지만 완전히 이해하지 못했습니다.
처럼 보인다터미널 프로그램dim
잘 처리하지만 지시 는 없습니다 .
멀티플렉서정보가 존재하지 않기 때문에 정보를 얻을 수 없으며 dim
따라서 글꼴이 올바르게 표시될 수 없습니다.
이제 왜 하나는 작동하고 다른 하나는 작동하지 않는지 잘 모르겠습니다.
답변1
tmux
(GNU 화면과 유사)는 실제 터미널의 기능을 (보통 다른) 내부 터미널로 변환하여 작동합니다. 이는 다른 터미널의 세션을 연결할 수 있도록 하기 위해 수행됩니다.동시에, 또는다른 시간에.
제대로 작동하면 어디에서 연결하더라도 "동일한" 텍스트가 표시됩니다.
모든 터미널에서 지원되지는 않습니다.dim
. 실제로 대부분의 사람들은 그렇지 않습니다. 터미널 데이터베이스에는 121번의 발생이 있습니다.dim
1514 터미널 설명과 비교.
1990년경에 시작되었을 때 screen
개발자들은 해당 기능을 무시하고 대신 가장 유용한 기능을 제공하기로 결정했습니다. 그들이 디자인한 프로그램은 각 행/열 단위에 대한 비디오 속성을 저장하는 것입니다.용어 모자프로그램을 사용할 수 있습니다. 소스 코드는 다음을 정의합니다.
#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는 복사본과 함께 번들로 제공됩니다.저주그리고터미널 데이터베이스. 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년 4월:
# 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년 6월:
# 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
외부 터미널에 사용됩니다. 애플리케이션에 표시되지는 않지만 하드코딩될 수 있습니다(터미널 설명을 사용하지 않음). 하지만 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
노트:질문의 요점은 묻는 것입니다.왜때로는 Nicholas Marriott가 제공하는 정보도 있습니다.어떻게이 문제를 해결하세요.
답변2
쉬운 수정
에 다음 코드를 추가합니다 ~/.tmux.conf
.
set -sa terminal-overrides ",*:dim=\\E[2m"
잠정적인 설명
애플리케이션.앱그러한 지침은 없는 것으로 보입니다 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
내부에서 실행된 명령의 출력입니다.멀티플렉서.
반면에,터미널 프로그램어쨌든 "보내다" dim
(모르겠어요 )어떻게또는왜) 위와 같이 작동합니다.
누락된 지시어 추가 dim
(마술적으로) 문제를 해결했습니다.