tcsh에서 탭 완성 색상을 제공하는 방법은 무엇입니까?

tcsh에서 탭 완성 색상을 제공하는 방법은 무엇입니까?

(StackOverflow.com에서 교차 게시됨)

이 문제그리고답변tcsh 프롬프트에 색상을 도입하는 방법을 가르쳐주세요.

이 페이지명령의 출력에 색상을 추가하는 방법에 대한 훌륭한 설명 echo:

> echo \\e[1\;30mBLACK\\e[0m
BLACK
> echo '\e[1;30mBLACK\e[0m'
BLACK

위 예에서 "BLACK"이라는 단어는 전체 색상 구성표에 따라 검정색(또는 어두운 회색) 전경색으로 인쇄됩니다.

이제 [TAB]그것을 tcsh.

complete testcmd 'p/*/`echo '"'"'\e[1;30mf834fef\e[0m'"'"'`/'

나는 얻다:

> testcmd [TAB]
> testcmd ^[\[1\;30mf834fef^[\[0m

분명히 이 문자들은 특별한 의미를 잃어버린 것 같습니다. 바라건대 내가 올바르게 탈출하지 않았기를 바랍니다. 하지만 나는 다른 여러 가지 방법을 시도했습니다. 따라서 어떤 도움이라도 대단히 감사하겠습니다.

실제 사용 사례는 시각적으로 구별하고 싶은 세 가지 유형의 완성을 제공하는 명령 완성이 있다는 것입니다. 대안은 외부 명령으로도 계산됩니다. 그렇기 때문에 외부 명령에 백틱을 사용하려면 완성이 필요합니다 echo. 예를 들어 이 명령의 세부 사항은 신경 쓰지 않습니다. 의 명령을 사용하여 tcsh어떤 방식으로든 작동하게 하면 complete적응할 수 있을 것입니다( perl -pe래퍼 등을 생각해보세요).

내가 이것을 믿는 이유가지다어떻게든 작동하는 것은 tcsh 자체가 를 입력하면 색상이 지정된 명령 완성을 제공한다는 것입니다 ls [TAB]. 이것은 내 설정에서 잘 작동합니다. 자동 완성 내에서 사용할 수도 ls -1F있으며 출력 색상 ls도 파이프됩니다. 예는 다음과 같습니다:

complete testcmd 'p/*/`ls -1F`/'

업데이트: mavin 사용자로stackoverflow에 지적됨, 이 예의 음영은 ls실제로 파이프되지 않습니다. 색상은 ls손실되지만 자동 완성 기능은 /ls 추가 및 끝 표시와 같은 프롬프트를 기반으로 LS_COLOURS 변수를 기반으로 색상을 다시 적용할 수 있습니다. *이는 실행하여 확인할 수 있습니다.

complete testcmd 'p/*/`ls --color -1`/'

색상을 제공하지 못하고 왜곡된 출력만 제공합니다. (말 그대로 이스케이프 문자 시퀀스를 통한 파이핑)

tcsh버전은 6.13.00입니다.

어떤 아이디어가 있나요? 바늘?

답변1

내가 원하는 방식으로 작업하는 것은 불가능해 보입니다. Stack Overflow에서는 사용자 mavit이 제공했습니다.이 답변이것이 내가 추구하는 행동에 가장 가까운 것입니다.

다양한 답변과 댓글에서 논의된 단점이 없는 더 나은 솔루션이 있는 경우 여기 또는 스택 오버플로에 답변을 추가하세요.

답변2

set color~/.cshrc 또는 ~/.tcshrc에 다음을 추가해 보세요.

관련 정보