O prompt do terminal sobrescreve a linha atual

6

Eu tenho um problema com minha linha de prompt de terminal. Quando a linha é longa demais, ela fica na mesma linha e, em seguida, a seta para cima faz com que pareça ainda pior.

Eu já verifiquei o prompt do terminal não está sendo agrupado corretamente , mas parece que estou aparentemente fechando todos os colchetes para caracteres não imprimíveis.

Esta é minha PS1:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot) }\[3[01;36m\]\u@\h\[3[00m\]3[01;34m\]\w3[00m\][$(type __git_ps1 >/dev/null 2>&1 && __git_ps1 "(%s)")]

Considere isso como minha linha de prompt padrão

MELISC@work~/dev/bin_tools[((main))]

Consegui obter

assdasdasdasdasdadasdsadadasdaddasdadadasdadsadasdsa((main))] asdsadsadsadsadasdasdassdasdasdassdasdassdasdasdasdasdasdasdsadsad

Eu já verifiquei meu .bashrc

Eu tenho e shopt -s checkwinsize devem verificar automaticamente as colunas

    
por melisc 20.10.2016 / 17:59

1 resposta

9

Você baniu completamente a idéia do shell Bourne Again do que foi impresso e o que ele tem que apagar / reescrever, pois exibe o histórico de comandos e permite editar a linha de comando.

Quebrar o seu aviso em seções:

  1. \[\e]0;\u@\h: \w\a\] - caracteres não imprimíveis, incluídos corretamente
  2. ${debian_chroot:+($debian_chroot) } - imprimindo apenas caracteres, presumivelmente
  3. \[3[01;36m\] - caracteres não imprimíveis, incluídos corretamente
  4. \u@\h - apenas caracteres de impressão
  5. \[3[00m\] - caracteres não imprimíveis, incluídos corretamente
  6. 3[01;34m\] - caracteres não imprimíveis, impropriamente fechados para que o shell Bourne Again não saiba que eles são
  7. \w3[00m\] - uma mistura errônea de caracteres de impressão e não impressão
  8. [$(type __git_ps1 >/dev/null 2>&1 && __git_ps1 "(%s)")] - imprimindo apenas caracteres, presumivelmente

Eu dei este conselho antes , mas é um conselho geral que se aplica aqui também:

  • Use \e ou 3 de forma consistente para sua própria sanidade.
  • Faça com que seus pares de não aninhamento coincidam com \[ e \] .
  • Certifique-se de que todas sequências não impressas estejam em \[ e \] (e que, inversamente, todas as sequências de impressão não sejam).

(É por isso que eu pessoalmente prefiro o Z Shell e seu mecanismo alternativo de expansão de prompt para quando eu quiser prompts coloridos malucos. sabe que coisas como %F{green} não são sequências de impressão, sem para ser informado, e também funciona as seqüências de escape corretas de terminfo , sem tê-los conectados.

    
por 20.10.2016 / 18:43