Oto mój bieżący monit:
user@machine ~/Projects/git/repo (git)-[name_of_the_branch] %
Chcę, aby pokazało mi, że istnieją wersje Skrytki poprzez dodanie litery „S”, jak poniżej:
user@machine ~/Projects/git/repo (git)-[name_of_the_branch][S] %
A „S” powinno być zielone :)
Jeszcze lepszym sposobem byłoby dodanie liczby ukrytych wersji.
user@machine ~/Projects/git/repo (git)-[name_of_the_branch][Number_of_stashed_revisions] %
Co muszę zmienić w .zshrc?
To jest mój aktualny plik .zshrc
Odpowiedzi:
Najpierw musisz zdefiniować funkcję, która będzie testować:
Na szczęście można je połączyć w jedno. Polecenie, którego szukasz, to:
Jeśli nie ma repozytorium, wówczas sama komenda git stash list wypisuje błąd na standardowy błąd, ale nic na standardowe wyjście (w tym przypadku przypadkowo zwróci kod błędu). Jeśli istnieje repozytorium, nic nie wydrukuje, ale nie wystąpi błąd. Testowanie na pustym łańcuchu obejmuje oba z nich.
Następnie musisz podać to w monicie. Zakładam, że znasz zmienną $ PS1, więc pokażę ci tylko definicję:
Ostatnią częścią jest dodanie koloru. Należy pamiętać, że do terminala dodawany jest kolor, wypisując kody ucieczki. Kody te nie są renderowane, ale cały tekst po nich jest zmieniany. Oznacza to, że nie tylko musisz je włączyć, ale także je wyłączyć. Wreszcie, ponieważ robisz to w trybie szybkim, musisz wskazać, że nie zajmują one miejsca (w przeciwnym razie twój terminal źle się przerysuje podczas przewijania historii).
Definiowanie kolorów odbywa się zwykle za pomocą tego szablonu:
Wstaw to do swojego .zshrc przed zdefiniowaniem $ PS1 i możesz odwoływać się do kolorów za pomocą zmiennych o nazwie $ PR_ COLOR-NAME . Aby nie zajmowały miejsca, musisz zawinąć je w % { VAR %} . Oznacza to, że otrzymujesz coś takiego:
Możesz użyć $ PR_LIGHT_GREEN, jeśli wolisz, aby tekst nie był pogrubiony. Sprawdź dostępne wartości w $ terminfo, aby uzyskać więcej efektów tekstowych.
źródło