질문

질문

질문

내 Mac에서 (10.11)멀티플렉서-ed 색상이 올바르게 표시 되지 않아 dim짜증이 납니다.

아래 이미지에서는 제출 작성자의 이름이 로 표시되어야 합니다 dim white. 이는 다음과 같은 상황에서 잘 작동합니다.터미널 프로그램하지만 범위에 포함되지 않음멀티플렉서.

자식 lg1 비교

누구든지 이것을 디버깅하는 방법을 알고 있습니까?
나는 이것이 변수와 관련이 있다고 생각 $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번의 발생이 있습니다.dim1514 터미널 설명과 비교.

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)

마찬가지로, 당신은 볼 수 없습니다dimxterm-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이러한 터미널 설명에 이 기능을 추가할 수 있습니다.infocmptic

  • 및 가져오기에 대한 infocmp기존 터미널 설명입니다 . 이는 첫 번째 항목만 표시합니다. 물론 두 번째 항목에 대해 설명한 프로세스를 반복합니다.xterm-256colorscreen-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(마술적으로) 문제를 해결했습니다.

관련 정보