Jak uzyskać kolorowe wypełnienie zakładki?

18

Czy istnieje sposób, aby uzyskać kolorowe wydruki, używając uzupełniania tabulacji w terminalu? Moje kolory są w porządku wszędzie indziej, więc wiem, że pomyślnie włączyłem kolorowy terminal.

Używanie bash w Ubuntu (10.10).

Ryan
źródło
Jak określić „kolorowe wydruki przy użyciu uzupełniania tabulatorami”?
slhck

Odpowiedzi:

21

W Bash nie ma możliwości kolorowania wydruków podczas ukończenia, tak jak w przypadku ryb i zsh. Można napisać funkcje uzupełniania, które generują sekwencje kontroli kolorów, ale trzeba będzie zachować kopie proponowanych uzupełnień z kodami kolorów i bez nich lub usunąć je, gdy użytkownik dokona wyboru, ponieważ Bash używa zaznaczenia bezpośrednio normalnie, a kody kolorów stanąć na przeszkodzie.

Jeśli jest to dla Ciebie ważna funkcja, polecam rozważyć użycie Zsh.

Aktualizacja

Bash 4.3 readline dodaje zmienną, która pozwala na kolor uzupełniania tabulacji, aby wyświetlać różne kolory dla plików wykonywalnych, katalogów itp. Podczas uzupełniania tabulatorów:

colored-stats

Readline w nadchodzącym Bash 4.4 dodaje zmienną, która umożliwia kolorowi wskazanie pasującej części łańcucha podczas uzupełniania tabulacji.

colored-completion-prefix

Możesz zobaczyć wartości tych zmiennych za pomocą

bind -v | grep color

Aby je ustawić, dodaj do ~/.inputrcpliku wiersze, takie jak:

set colored-stats on
Wstrzymano do odwołania.
źródło
1
@Ryan: Zsh jest dość kompatybilny z Bash. Prawdopodobnie zmiana byłaby dość łatwa. Ma wiele potężnych funkcji, których Bash nie ma (lub do których musisz użyć zewnętrznych narzędzi). Jest tylko kilka rzeczy, które różnią się znacznie w podstawach. Przykładem jest to, że indeksy tablicowe są oparte na wartościach jeden zamiast zera, ale istnieje ustawienie, które ma na to wpływ. Zsh używam jednak tylko okazjonalnie.
Wstrzymano do odwołania.
1
@AstroFloyd: Z Bash Manua : „Definicje kolorów pochodzą z wartości LS_COLORSzmiennej środowiskowej”. Dokumentacja dla tej zmiennej znajduje się tutaj . Nie ma ustawienia dla manstron, więc musisz sprawdzić, gdzie LS_COLORSjest ustawiony, znaleźć kombinację kolorów, która odpowiada i zmienić go. W moim systemie mannazwy stron nie są kolorowe po wypełnieniu tabulatorami (i zepsute dowiązania symboliczne, a lsdane wyjściowe czerwono-szare ...)
Wstrzymano do odwołania.
1
... są jasnoniebieskie jak prawidłowe dowiązania symboliczne podczas uzupełniania tabulatorów).
Wstrzymano do odwołania.
1
@AndyCarlson: Czy bind -v | grep colorpokazuje oba set colored-completion-prefix oni set colored-stats on? Jeśli tak, co się stanie, gdy wpiszesz literę, a następnie naciśniesz dwukrotnie klawisz Tab? Jeśli dodałeś ustawienia do swojego, ~/.inputrcale nie uruchomiłeś nowego terminala lub nie wykonałeś re-read-init-filego, naciskając control-x control-r, ustawienia nie zostaną zastosowane.
Wstrzymano do odwołania.
2
@AndyCarlson Co jest wyświetlane w wierszu polecenia po naciśnięciu klawiszy ctrl-x ctrl-v?
Wstrzymano do odwołania.
3

Nie wiem, o kolorach zakończenia dla opcji polecenia i argumenty, ale dla nazwy pliku i katalogu, zgodnie z ( /unix//a/133866 ) stanów user495470 że w Bash 4.3 i później można dodać set colored-stats ondo ~/.inputrcdostać kolorowe zakończenie, kiedy to zrobisz ls <tab>.

James Choi
źródło