git completion error in bash
阿神
阿神 2017-05-02 09:28:05
0
2
632

在新安装的Debian的Bash下,通过sudo apt-get install git安装后,git的补全出现异常。

$ git  ^[[1;43m^[[K c^[[m^[[Kherry d^[[m^[[Kifftool h^[[m^[[Kttp-backend m^[[m^[[Kerge-file rm a^[[m^[[Kdd c^[[m^[[Kherry-pick d^[[m^[[Kiff-tree h^[[m^[[Kttp-fetch m^[[m^[[Kerge-index shortlog a^[[m^[[Km c^[[m^[[Klean f^[[m^[[Kast-export h^[[m^[[Kttp-push m^[[m^[[Kerge-octopus show a^[[m^[[Knnotate c^[[m^[[Klone f^[[m^[[Kast-import i^[[m^[[Kmap-send mv show-branch a^[[m^[[Kpply c^[[m^[[Kolumn f^[[m^[[Ketch i^[[m^[[Kndex-pack name-rev stage a^[[m^[[Krchive c^[[m^[[Kommit f^[[m^[[Ketch-pack i^[[m^[[Knit notes stash b^[[m^[[Kisect c^[[m^[[Kommit-tree f^[[m^[[Kilter-branch i^[[m^[[Knit-db pull status b^[[m^[[Klame c^[[m^[[Konfig f^[[m^[[Kmt-merge-msg i^[[m^[[Knstaweb push submodule b^[[m^[[Kranch c^[[m^[[Kount-objects f^[[m^[[Kor-each-ref l^[[m^[[Kog rebase subtree b^[[m^[[Kundle c^[[m^[[Kredential f^[[m^[[Kormat-patch l^[[m^[[Ks-files reflog tag c^[[m^[[Kat-file c^[[m^[[Kredential-cache f^[[m^[[Ksck l^[[m^[[Ks-remote relink verify-commit c^[[m^[[Kheck-attr c^[[m^[[Kredential-store f^[[m^[[Ksck-objects l^[[m^[[Ks-tree remote whatchanged c^[[m^[[Kheck-ignore d^[[m^[[Kaemon g^[[m^[[Kc mergetool repack c^[[m^[[Kheck-mailmap d^[[m^[[Kescribe g^[[m^[[Ket-tar-commit-id m^[[m^[[Kailinfo replace c^[[m^[[Kheckout d^[[m^[[Kiff g^[[m^[[Krep m^[[m^[[Kailsplit request-pull c^[[m^[[Kheckout-index d^[[m^[[Kiff-files h^[[m^[[Kash-object m^[[m^[[Kerge reset c^[[m^[[Kheck-ref-format d^[[m^[[Kiff-index h^[[m^[[Kelp m^[[m^[[Kerge-base revert

部分是正常的,比如git revert。但是很大一部分,比如git add,由于补全项为git a^[[m^[[Kdd而无法正常使用。

请问:

  1. Bash中,这个^[[m^[[K是什么?

  2. 如何去除它,让git的补全正常?

(我曾经用过git-completion这个方案,但是它太老,早已不更新,导致新功能补全缺失。)

阿神
阿神

闭关修行中......

모든 응답 (2)
Ty80

다시 한번 강조하지만 터미널은 터미널이고, 쉘은 쉘이다. 터미널과 쉘을 구분하지 못하는 사람들이 늘 존재한다...

이 문제는 터미널의 부적절한 구성으로 인해 발생합니다. Bash가 아무리 강력해도 ANSI 이스케이프 코드 분석을 처리할 수 없습니다. i3를 대체하면 흑백 모니터 디스플레이 색상을 만들 수 없는 것과 같습니다. i7.

두 가지 옵션이 있습니다:

  1. Git 완료 색상 표시 끄기

  2. ANSI 이스케이프 코드를 지원하도록 터미널을 조정하세요

터미널 에뮬레이터가 색상을 지원하는 경우 색상을 변경하면$TERM일반적으로 문제가 해결됩니다. 더 자세한 지침은 http://www.tldp.org/HOWTO/Text-Terminal-HOWTO-16.html 및 이 페이지의 링크를 참조하세요.

    大家讲道理

    Bash에서^[[m^[[K는 무엇인가요?

    은 ANSI 이스케이프 코드입니다.^[ESC키를 나타내고^[[ESC[는 CSI(Control Sequence Introducer)를 의미하므로^[[m^[[K는 CSI m, CSI K를 나타냅니다. CSI m과 CSI K가 무엇을 의미하는지에 대해서는 표를 찾아봐야 합니다.

    CSI m의 전체 형식은 CSInm이며, 이는 콘솔의 텍스트 렌더링 효과인 SGR(Select Graphic Rendition)을 나타냅니다. 여기서n는 0 이상 매개변수가 없으면 CSI m이 되며 이는 기본 렌더링 효과로 재설정됨을 의미합니다. 자세한 내용은 여기를 참조하세요. (커스텀 콘솔의 PS도 이를 사용하여 색상을 설정합니다.) 예를 들어 질문 시작 부분의^[[1;43m는 "굵게; 빨간색" 렌더링 효과를 나타냅니다.

    CSI K의 전체 형태는 CSInK로 EL – Erase in Line, 즉 줄의 일부를 삭제한다는 의미입니다. 그 중n도 매개변수입니다.n이 0이거나 생략되면 커서 위치부터 줄 끝까지 삭제한다는 의미인 CSI K입니다. 다른 상황에 대해서는 Wikipedia의 설명을 참조하세요.

      최신 다운로드
      더>
      웹 효과
      웹사이트 소스 코드
      웹사이트 자료
      프론트엔드 템플릿
      회사 소개 부인 성명 Sitemap
      PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!