erreur d'achèvement de git dans bash
阿神
阿神 2017-05-02 09:28:05
0
2
682

Sous Debian Bash nouvellement installé, après l'installation via sudo apt-get install git, l'achèvement de git apparaît anormalement.

$ 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   
La partie

est normale, comme git revert. Mais une grande partie, comme git add, ne peut pas être utilisée normalement car l'élément de complétion est git a^[[m^[[Kdd.

Excusez-moi :

  1. Qu'est-ce que c'est ^[[m^[[K dans Bash ?

  2. Comment supprimer
  3. pour que la complétion de git fonctionne normalement ?

(J'ai déjà utilisé la solution git-completion, mais elle est trop ancienne et n'a pas été mise à jour, ce qui entraîne l'absence de complétion de nouvelles fonctionnalités.)

阿神
阿神

闭关修行中......

répondre à tous(2)
Ty80

Je le souligne encore une fois, un terminal est un terminal, et un Shell est un Shell. Il y a toujours des gens qui ne font pas la différence entre un terminal et un Shell...

Ce problème est dû à une mauvaise configuration de votre terminal. Quelle que soit la puissance de Bash, il ne peut pas gérer l'analyse du code d'échappement ANSI, tout comme vous ne pouvez pas afficher les couleurs d'un moniteur en noir et blanc si vous remplacez i3 par. i7.

Vous avez deux options :

  1. Désactiver la coloration des complétions Git

  2. Ajustez votre terminal pour prendre en charge le code d'échappement ANSI

Si votre émulateur de terminal prend en charge la couleur, la modifier $TERM résout généralement le problème. Pour des instructions plus détaillées, veuillez vous référer à http://www.tldp.org/HOWTO/Text-Terminal-HOWTO-16.html et aux liens sur cette page.

大家讲道理

Qu'est-ce que c'est ^[[m^[[K dans Bash ?

est le code d'échappement ANSI. ^[ représente la touche ESC, et ^[[ signifie ESC[ représente CSI (Control Sequence Introducer), donc ^[[m^[[K représente CSI m, CSI K. Quant à ce que signifient CSI m et CSI K, vous devez consulter le tableau.

La forme complète de

CSI m est CSInm, qui représente SGR – Select Graphic Rendition, qui est l'effet de rendu du texte dans la console. Où n vaut 0 pour plus de paramètres. Lorsqu'il n'y a pas de paramètres, cela devient CSI m, ce qui signifie réinitialiser l'effet de rendu par défaut. Voir ici pour plus de détails. (Le PS de la console personnalisée l'utilise également pour définir la couleur.) Par exemple, le ^[[1;43m au début de la question indique l'effet de rendu « gras ; rouge ».

La forme complète de

CSI K est CSInK, ce qui signifie EL – Effacer la ligne, c'est-à-dire supprimer une partie de la ligne. Parmi eux, n est également un paramètre Lorsque n est 0 ou omis, il s'agit de CSI K, ce qui signifie supprimer de la position du curseur jusqu'à la fin de la ligne. Pour d'autres situations, veuillez vous référer à la description dans Wikipédia.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal