Come ottenere il completamento di una scheda colorata?


17

C'è un modo per ottenere un output colorato quando si utilizza il completamento della scheda in un terminale? I miei colori vanno bene ovunque, quindi so che ho abilitato un terminale colore con successo.

Usando bash in Ubuntu (10.10).


Come si specifica un "output colorato quando si utilizza il completamento della scheda"?
slhck,

Risposte:


21

All'interno di Bash non è possibile colorare l'output durante il completamento come in fish e zsh. Si potrebbero scrivere funzioni di completamento che generano sequenze di controllo del colore, ma si dovrebbe conservare copie dei completamenti proposti con e senza codici colore o eliminare la striscia quando l'utente effettua una selezione poiché Bash utilizza la selezione direttamente normalmente e i codici colore verrebbero ostacolare.

Se questa è una funzionalità importante per te, ti consiglio di prendere in considerazione l'utilizzo di zsh.

Aggiornare

Readline di Bash 4.3 aggiunge una variabile che consente al colore per il completamento della scheda di mostrare colori diversi per file eseguibili, directory, ecc., Durante il completamento della scheda:

colored-stats

Readline nel prossimo Bash 4.4 aggiunge una variabile che consente al colore di indicare la parte corrispondente della stringa durante il completamento della scheda.

colored-completion-prefix

Puoi vedere i valori di queste variabili usando

bind -v | grep color

Per impostarli, aggiungi linee al tuo ~/.inputrcfile come:

set colored-stats on

1
@Ryan: Zsh è abbastanza compatibile con Bash. Probabilmente lo switch sarebbe abbastanza semplice. Ha molte potenti funzionalità che Bash non ha (o devi usare utility esterne per). Ci sono solo alcune cose che sono significativamente diverse nelle basi. Un esempio è che gli indici di array sono basati su uno invece che su zero, ma c'è un'impostazione che lo influenza. Uso solo occasionalmente zsh, però.
In pausa fino a nuovo avviso.

1
@AstroFloyd: Da Bash Manua : "Le definizioni dei colori sono prese dal valore della LS_COLORSvariabile d'ambiente". La documentazione per quella variabile è qui . Non esiste un'impostazione per le manpagine, quindi dovrai guardare dove LS_COLORSviene impostato e trovare la combinazione di colori corrispondente e cambiarla. Sul mio sistema, i mannomi delle pagine non vengono colorati quando vengono completati le schede (e i collegamenti simbolici non funzionanti, mentre in rosso su grigio lsnell'output, ...
In pausa fino a ulteriore avviso.

1
... sono blu chiaro come collegamenti simbolici validi durante il completamento della scheda).
In pausa fino a nuovo avviso.

1
@AndyCarlson: bind -v | grep colormostra entrambi set colored-completion-prefix one set colored-stats on? In tal caso, cosa succede quando si digita la lettera a seguita premendo due volte tab? Se hai aggiunto le impostazioni al tuo ~/.inputrcma non hai avviato un nuovo terminale o non hai eseguito re-read-init-filepremendo control-x control-r, le impostazioni non avranno effetto.
In pausa fino a nuovo avviso.

2
@AndyCarlson Cosa viene emesso al prompt di bash quando si preme ctrl-x ctrl-v?
In pausa fino a nuovo avviso.

3

Non so sui colori di completamento per le opzioni di comando e gli argomenti, ma per il nome del file e le directory, in base alla ( /unix//a/133866 ) afferma che nel user495470 Bash 4.3 e successive è possibile aggiungere set colored-stats ona ~/.inputrcfarsi colorato completamento quando lo fai ls <tab>.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.