새로 설치된 Debian Bash에서 sudo apt-get install git
을 통해 설치한 후 git 완료가 비정상적으로 나타납니다.
처럼 git revert
부분은 정상입니다. 하지만 git add
등 큰 부분은 완성항목이 git a^[[m^[[Kdd
이므로 정상적으로 사용할 수 없습니다.
실례합니다:
Bash에서 ^[[m^[[K
는 무엇인가요?
완성이 정상적으로 작동하도록 git
(한번 git-completion 솔루션을 사용해봤는데 너무 낡고 업데이트가 안되어 새로운 기능 완성도가 부족했습니다.) <🎜>
다시 한번 강조하지만 터미널은 터미널이고, 쉘은 쉘이다. 터미널과 쉘을 구분하지 못하는 사람들이 늘 존재한다...
이 문제는 터미널의 부적절한 구성으로 인해 발생합니다. Bash가 아무리 강력해도 ANSI 이스케이프 코드 분석을 처리할 수 없습니다. i3를 대체하면 흑백 모니터 디스플레이 색상을 만들 수 없는 것과 같습니다. i7.
두 가지 옵션이 있습니다:
Git 완료 색상 표시 끄기
ANSI 이스케이프 코드를 지원하도록 터미널을 조정하세요
터미널 에뮬레이터가 색상을 지원하는 경우 색상을 변경하면
$TERM
일반적으로 문제가 해결됩니다. 더 자세한 지침은 http://www.tldp.org/HOWTO/Text-Terminal-HOWTO-16.html 및 이 페이지의 링크를 참조하세요.은 ANSI 이스케이프 코드입니다.
^[
은 ESC 키를 나타내고^[[
는 ESC[
는 CSI(Control Sequence Introducer)를 의미하므로^[[m^[[K
는 CSI m, CSI K를 나타냅니다. CSI m과 CSI K가 무엇을 의미하는지에 대해서는 표를 찾아봐야 합니다.CSI m의 전체 형식은 CSI
n
m이며, 이는 콘솔의 텍스트 렌더링 효과인 SGR(Select Graphic Rendition)을 나타냅니다. 여기서n
는 0 이상 매개변수가 없으면 CSI m이 되며 이는 기본 렌더링 효과로 재설정됨을 의미합니다. 자세한 내용은 여기를 참조하세요. (커스텀 콘솔의 PS도 이를 사용하여 색상을 설정합니다.) 예를 들어 질문 시작 부분의^[[1;43m
는 "굵게; 빨간색" 렌더링 효과를 나타냅니다.CSI K의 전체 형태는 CSI
n
K로 EL – Erase in Line, 즉 줄의 일부를 삭제한다는 의미입니다. 그 중n
도 매개변수입니다.n
이 0이거나 생략되면 커서 위치부터 줄 끝까지 삭제한다는 의미인 CSI K입니다. 다른 상황에 대해서는 Wikipedia의 설명을 참조하세요.