적은 검색을 강조하지 않습니다 12.10에서 일합니다. $TERM=screen-256.

어떤 일이 생겨서 더 이상 하이라이트가 표시되지 않습니다. 난 노력 했어:

  • 다른 터미널을 사용합니다.
  • -g옵션 사용
  • 확인하는 것은 -G이 없다
  • 검색하는 동안 ^ K
  • ESCU

아무것도 도움이되지 않습니다.

나는 i3 데스크탑의 Ubuntu 12.10에서 일합니다. $TERM=screen-256. 내가 사용하는 경우 ^ ALT 1로 전환 TTY1 과 어떻게 man man나는 두 사람의 매개 변수가 강조 것을 볼과 패턴을 검색 할 수 있습니다.

다른 문제를 해결하려면 어떻게해야합니까?



답변

TETY 변수를 적절한 값으로 설정하기 때문에 TTY1에서 강조 표시가 작동합니다.

화면을 사용하는 경우 :

TERM 변수를 적절한 값으로 변경하십시오 (예 : screen 또는 screen-256color ). 개인 ~ / .screenrc 또는 시스템 전체 / etc / screenrc 를 확인하고 해당 줄을 수정하십시오.

내 버전의 less에서 값 screen-256 은 실제로 오류가 발생합니다.

WARNING: terminal is not fully functional
-  (press RETURN)

화면을 사용하지 않는 경우 :

화면 *화면 에서만 올바르게 해석됩니다.

TERM의 올바른 값은 터미널 에뮬레이터에 따라 다르며 일반적으로 설정해야합니다. Ubuntu의 사전 설치된 3 개의 터미널 에뮬레이터의 기본값은 xterm 입니다.

실행

grep -R TERM= ~/.* /etc 2> /dev/null

쉘의 구성 파일에서 TERM의 값이 무시되는지 확인하십시오.


답변

글쎄, 이것은 성가신 일입니다. 무슨 일이야? ( tmux아래 iTerm.app)

$ echo test > test ; echo $TERM
screen

그리고 약간의 기록으로

$ script withscreen
Script started, output file is withscreen
$ less -p test test
... q to quit and then exit the shell session ...

$ script withxterm
Script started, output file is withxterm
$ TERM=xterm less -p test test
... q and exit again ...

이제 우리는 사용 된 코드를 봅니다.

$ grep test withscreen | hexdump -C
00000000  24 20 6c 65 73 73 20 2d  70 20 74 65 73 74 20 74  |$ less -p test t|
00000010  65 73 74 0d 0d 0a 1b 5b  33 6d 74 65 73 74 1b 5b  |est....[3mtest.[|
00000020  32 33 6d 0d 0a 1b 5b 35  3b 31 48 1b 5b 33 6d 74  |23m...[5;1H.[3mt|
00000030  65 73 74 1b 5b 32 33 6d  0d 0a 1b 5b 33 38 3b 31  |est.[23m...[38;1|
00000040  48 1b 5b 33 6d 74 65 73  74 20 28 45 4e 44 29 1b  |H.[3mtest (END).|
00000050  5b 32 33 6d 1b 5b 4b 0d  1b 5b 4b 1b 5b 3f 31 6c  |[23m.[K..[K.[?1l|
00000060  1b 3e 24 20 5e 44 0d 0d  0a                       |.>$ ^D...|
00000069
$ grep test withxterm | hexdump -C
00000000  24 20 54 45 52 4d 3d 78  74 65 72 6d 20 6c 65 73  |$ TERM=xterm les|
00000010  73 20 2d 70 20 74 65 73  74 20 74 65 73 74 0d 0d  |s -p test test..|
00000020  0a 1b 5b 37 6d 74 65 73  74 1b 5b 32 37 6d 0d 0a  |..[7mtest.[27m..|
00000030  1b 5b 35 3b 31 48 1b 5b  37 6d 74 65 73 74 1b 5b  |.[5;1H.[7mtest.[|
00000040  32 37 6d 0d 0a 1b 5b 33  38 3b 31 48 1b 5b 37 6d  |27m...[38;1H.[7m|
00000050  74 65 73 74 20 28 45 4e  44 29 1b 5b 32 37 6d 1b  |test (END).[27m.|
00000060  5b 4b 0d 1b 5b 4b 1b 5b  3f 31 6c 1b 3e 24 20 65  |[K..[K.[?1l.>$ e|
00000070  78 69 74 0d 0d 0a                                 |xit...|
00000076
$

xterm 컨트롤 시퀀스 문서 를 참조 하여 1b 5b ...코드를 더 이해하기 쉽게 만들거나, 어떤 시퀀스가 강조 표시의 원인 인지 알기 위해 시퀀스를 수동으로 둘러 볼 수 있습니다.TERM=xterm

$ printf "\033[7mtest\033[27m\n"
test

하는 TERM=screen경우는하지 않는, 역의 제어 시퀀스 워드 프로세서 당

ESC [
     Control Sequence Introducer (CSI  is 0x9b).
...
CSI Pm m  Character Attributes (SGR).
...
            Ps = 7  -> Inverse.
...
            Ps = 2 7  -> Positive (not inverse).

그 문서 근처에서 우리는 screen터미널 \033[3m이탤릭체로되어 있고 이탤릭체로 되어 \033[23m 있지 않다는 것을 알게 될 것입니다 .

이 결과는 몇 가지 옵션을 제공합니다. 기울임 꼴 텍스트를 표시하도록 터미널을 구성하거나 screen대신 기울임 꼴 대신 역 코드를 사용하도록 터미널 을 만들 수 있습니다. ( less(1)문서 에서 파고 들었던 일부 는 명확한 “이탤릭체 대신 역으로 사용”노브를 표시하지 않았습니다.) (또한 일부 터미널은 X를 Y로 변환하는 것을 지원할 수 있습니다. 자세한 내용은 터미널 문서를 확인하십시오). 다른 터미널 에뮬레이터를 시도하고 그 기능을 확인하십시오 …)

와우 이탤릭체로 된 텍스트는 보기 흉하다 . 대신 코드 screen사용을 반대로 바꾸어 봅시다 . 여기에는 terminfo(또는 가능한 termcap) 데이터베이스가 포함되며 ,이 데이터베이스는 다음을 통해 내보내고 infocmp(1)컴파일 할 수 있습니다.tic(1)

$ TERM=screen infocmp > ti.screen ; TERM=xterm infocmp > ti.xterm
$ fgrep '\E[7' ti.xterm
        rc=\E8, rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
        smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m,
$ fgrep rev= ti.screen
        nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
$ fgrep '\E[3m' ti.screen
        smso=\E[3m, smul=\E[4m, tbc=\E[3g,
$

내가 추측에는 요 그래서이 smso주어진 사용되는 xterm용도 \E[7mscreen \E[3m; 이것에 따르면 terminfo(5)“스탠드 아웃 모드”이고 반대와 짝을 이룹니다 rmso. 그것들을 xterm사용 하는 것으로 변경합시다 …

$ TERM=screen infocmp | sed -e 's/smso=[^,]*/smso=\\E[7m/;s/rmso=[^,]*/rmso=\\E[27m/' > foo
$ tic -o ~/.terminfo foo
$ rm foo

이봐, 이제 더 좋아 보인다 (그러나 모든 파일 에서 screen또는 다른 terminfo파일 을 수행해야 합니다 …)