Como obter uma conclusão colorida da guia?

17

Existe uma maneira de obter uma saída colorida ao usar o preenchimento de guias em um terminal? Minhas cores são boas em qualquer outro lugar, então eu sei que habilitei um terminal de cores com sucesso.

Usando o bash no Ubuntu (10.10).

Ryan
fonte
Como você especifica uma "saída colorida ao usar o preenchimento de tabulação"?
slhck 27/02

Respostas:

21

Não há facilidade no Bash para colorir a saída durante a conclusão, como no fish e no zsh. Pode-se escrever funções de conclusão que produzam seqüências de controle de cores, mas você teria que manter cópias das conclusões propostas com e sem códigos de cores ou remover quando o usuário fizer uma seleção, pois o Bash usa a seleção diretamente normalmente e os códigos de cores entrar no caminho.

Se esse é um recurso importante para você, recomendo que você considere o uso do zsh.

Atualizar

O readline do Bash 4.3 adiciona uma variável que permite que a cor para o preenchimento de guias mostre cores diferentes para arquivos executáveis, diretórios etc. durante o preenchimento de guias:

colored-stats

O Readline no próximo Bash 4.4 adiciona uma variável que permite que a cor indique a parte correspondente da sequência durante o preenchimento da guia.

colored-completion-prefix

Você pode ver os valores dessas variáveis ​​usando

bind -v | grep color

Para defini-los, adicione linhas ao seu ~/.inputrcarquivo, como:

set colored-stats on
Pausado até novo aviso.
fonte
11
@Ryan: Zsh é bastante compatível com o Bash. Você provavelmente consideraria a mudança bastante fácil. Ele tem muitos recursos poderosos que o Bash não possui (ou você precisa usar utilitários externos). Existem apenas algumas coisas que são significativamente diferentes no básico. Um exemplo é que os índices de matriz são baseados em um em vez de em zero, mas há uma configuração que afeta isso. Só uso o zsh ocasionalmente.
Pausado até novo aviso.
11
@AstroFloyd: No Bash Manua : "As definições de cores são obtidas do valor da LS_COLORSvariável de ambiente." A documentação para essa variável está aqui . Como não há uma configuração para as manpáginas, você precisará verificar onde LS_COLORSé definido e encontrar a combinação de cores que corresponde e alterá-la. No meu sistema, mannomes de página não se colorido quando sendo guia concluída (e links simbólicos quebrados, enquanto o vermelho-on-cinza na lssaída, ...
. Pausada até novo aviso
11
... são azul claro como links simbólicos válidos durante a conclusão da guia).
Pausado até novo aviso.
11
@AndyCarlson: bind -v | grep colorMostra os dois set colored-completion-prefix one set colored-stats on? Se sim, o que acontece quando você digita a letra a seguida de pressionar tab duas vezes? Se você adicionou as configurações ao seu, ~/.inputrcmas não iniciou um novo terminal ou não executou re-read-init-filepressionando control-x control-r, as configurações não terão efeito.
Pausado até novo aviso.
2
@AndyCarlson O que é produzido em um prompt do bash quando você pressiona ctrl-x ctrl-v?
Pausado até novo aviso.
3

Eu não sei sobre as cores de conclusão para opções de comando e argumentos, mas para nome de arquivo e diretórios, de acordo com ( /unix//a/133866 ) estados user495470 que em Bash 4.3 e mais tarde você pode adicionar set colored-stats onpara ~/.inputrccomeçar colorido conclusão quando você faz ls <tab>.

James Choi
fonte