Rumah > Soal Jawab > teks badan
在新安装的Debian的Bash下,通过sudo apt-get install git
安装后,git的补全出现异常。
$ git <TAB>
^[[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
而无法正常使用。
请问:
Bash中,这个^[[m^[[K
是什么?
如何去除它,让git
的补全正常?
(我曾经用过git-completion这个方案,但是它太老,早已不更新,导致新功能补全缺失。)
PHP中文网2017-05-02 09:30:05
Saya tekankan sekali lagi, terminal ialah terminal, dan Shell ialah Shell Sentiasa ada orang yang tidak dapat membezakan antara terminal dan Shell...
Masalah ini disebabkan oleh konfigurasi terminal anda yang tidak betul Tidak kira betapa kuatnya Bash, ia tidak dapat mengendalikan analisis Kod Escape ANSI Sama seperti anda tidak boleh membuat warna paparan monitor hitam putih jika anda menggantikan dengan i3 i7.
Anda mempunyai dua pilihan:
Matikan pewarnaan pelengkapan Git
Laraskan terminal anda untuk menyokong Kod Escape ANSI
Jika Terminal Emulator anda menyokong warna, menukarnya $TERM
biasanya menyelesaikan masalah. Untuk arahan yang lebih terperinci, sila rujuk http://www.tldp.org/HOWTO/Text-Terminal-HOWTO-16.html dan pautan pada halaman ini.
大家讲道理2017-05-02 09:30:05
Apakah ini
^[[m^[[K
dalam Bash?
ialah kod melarikan diri ANSI. ^[
mewakili kekunci ESC dan ^[[
bermaksud ESC[
mewakili CSI (Pengenalan Urutan Kawalan), jadi ^[[m^[[K
mewakili CSI m, CSI K. Bagi maksud CSI m dan CSI K, anda perlu mencari jadual.
CSI m ialah CSIn
m, yang mewakili SGR – Select Graphic Rendition, iaitu kesan pemaparan teks dalam konsol. Di mana n
ialah 0 kepada lebih banyak parameter Apabila tiada parameter, ia menjadi CSI m, yang bermaksud menetapkan semula kepada kesan pemaparan lalai. Lihat di sini untuk butiran. (PS konsol tersuai juga menggunakan ini untuk menetapkan warna.) Contohnya, ^[[1;43m
pada permulaan soalan menunjukkan kesan pemaparan "bold; merah".
CSI K ialah CSIn
K, yang bermaksud EL – Padam dalam Baris, iaitu, padamkan sebahagian daripada baris. Antaranya, n
juga merupakan parameter Apabila n
0 atau diabaikan, ia adalah CSI K, yang bermaksud pemadaman dari kedudukan kursor ke penghujung baris. Untuk situasi lain, sila rujuk penerangan dalam Wikipedia.