문제

터미널 시퀀스를 사용하여 터미널 에뮬레이터에서 텍스트에 색상을 지정할 수 있습니다.

$ echo -e '\e[37;41m--this is white on red--\e[0m'

그리고 이것은 작동합니다.

다음은 빨간색 직사각형을 인쇄합니다.공백 문자의 배경은 빨간색이고 전경은 비어 있습니다.

$ echo -e '\e[37;41m     \e[0m '

그러나 다음은 탭으로 구분된 두 개의 빨간색 직사각형을 인쇄합니다.

$ echo -e '\e[37;41m  \t  \e[0m '

즉, 탭 문자는 빨간색 배경 강조를 받지 않습니다.기본 터미널 배경색을 사용합니다.

탭이 공백처럼 강조표시되지 않는 이유는 무엇입니까?다른 방법으로 강제할 수 있나요?

도움이 되었습니까?

해결책 2

답을 찾았습니다. 아니요, 표준 호환 터미널 에뮬레이터에서 탭을 강조 표시 할 수 없습니다. 탭은 실제로 터미널의 공백이 아닙니다. 다음 탭 정지로 전진하는 것은 커서 움직임 캐릭터입니다. 사실상 내 예제는 "빨간색 배경에 두 개의 공백을 인쇄하고 다음 탭 정지로 이동 한 다음 빨간색 배경에 두 개의 공백을 더 인쇄합니다"라고 말합니다.

해결 방법은 인쇄하기 전에 탭을 공백으로 변환하려는 Ankon의 제안입니다.

다른 팁

탭이 탭이 될 필요가 없다면 확장(1)을 통해 텍스트를 전처리할 수 있습니다.

멋진 솔루션을 찾기가 어려웠 기 때문에 (그리고이 페이지는 첫 번째 검색 결과였습니다) ... 이것이 제가 .bashrc 파일에있는 것입니다 ( http://pastebin.com/pn1fkkjq 수정으로) :

catt() { # Highlight whitespace on the terminal -- rolfwr
    local C=`printf '\033[0;36m'` R=`printf '\033[0m'`
    #cat "$@" | sed -e "s/      /${C}▹▹▹▹▹▹▹▹$R/g" -e "s/ /${C}·$R/g" -e "s/$/${C}⁋$R/"
    #cat "$@" | sed -e "s/ /${C}·$R/g" -e "s/\t/${C} ▹▹ $R/g" -e "s/$/${C}⁋$R/"
    cat "$@" | sed -e "s/ /${C}·$R/g" | expand | sed -e "s/ \( *\)/${C}▹\1$R/g" -e "s/$/${C}⁋$R/"
    #cat "$@" | sed -e "s/ /${C}.$R/g" | expand | sed -e "s/ \( *\)/${C}>\1$R/g" -e "s/$/${C}P$R/"
}

이것이 다른 사람도 도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top