recherche

Maison  >  Questions et réponses  >  le corps du texte

erreur d'achèvement de git dans bash

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.)

阿神阿神2807 Il y a quelques jours716

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-05-02 09:30:05

    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.

    répondre
    0
  • 大家讲道理

    大家讲道理2017-05-02 09:30:05

    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.

    répondre
    0
  • Annulerrépondre