Chapters ▾ 2nd Edition

A1.7 Appendix A: Το Git σε άλλα περιβάλλοντα - Το Git στο Zsh

Το Git στο Zsh

Το Git περιέχει επίσης με μια βιβλιοθήκη συμπλήρωσης με tab για το Zsh. Για να το χρησιμοποιήσουμε, απλώς τρέχουμε autoload -Uz compinit && compinit μέσα στο .zshrc αρχείο. Το περιβάλλον του Zsh είναι λίγο πιο ισχυρό από αυτό του Bash:

$ git che<tab>
check-attr        -- display gitattributes information
check-ref-format  -- ensure that a reference name is well formed
checkout          -- checkout branch or paths to working tree
checkout-index    -- copy files from index to working directory
cherry            -- find commits not merged upstream
cherry-pick       -- apply changes introduced by some existing commits

Οι αμφισβητούμενες συμπληρώσεις με tab δεν αναφέρονται απλά· έχουν χρήσιμες περιγραφές και μπορούμε να πλοηγηθούμε γραφικά στη λίστα πατώντας επανειλημμένα το κουμπί tab. Αυτό λειτουργεί με εντολές Git, τα ορίσματά τους και τα ονόματα άλλων πραγμάτων μέσα στο αποθετήριο (όπως refs και απομακρυσμένα αποθετήρια), καθώς και τα ονόματα αρχείων και όλα τα άλλα πράγματα, τα οποία γνωρίζει το Zsh πώς να τα συμπληρώσει με tab.

Το Zsh έρχεται με ένα πλαίσιο (framework) για να πάρουμε πληροφορίες από το σύστημα ελέγχου εκδόσεων (version control system, VCS), που ονομάζεται vcs_info. Για να συμπεριλάβουμε το όνομα του κλάδου στην δεξία πλευρά της προτροπής, προσθέτουμε τις παρακάτω γραμμές στο ~/.zshrc αρχείο μας.

autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT='${vcs_info_msg_0_}'
# PROMPT='${vcs_info_msg_0_}%# '
zstyle ':vcs_info:git:*' formats '%b'

Αυτό έχει ως αποτέλεσμα την εμφάνιση του τρέχοντος κλάδου στη δεξιά πλευρά του παραθύρου του τερματικού, όποτε το κέλυφος μας βρίσκεται μέσα σε ένα αποθετήριο Git. Η αριστερή πλευρά επίσης υποστηρίζεται, προφανώς, απλώς βγάζουμε από σχόλιο την ανάθεση στο PROMPT. Μοιάζει λίγο σαν αυτό:

Εξατομικευμένη προτροπή στο `zsh`
Figure 185. Εξατομικευμένη προτροπή στο zsh

Για περισσότερες πληροφορίες στο vcs_info, κοιτάζουμε την τεκμηρίωση στο zshcontrib(1) στην σελίδα χειρισμού (manual page), ή διαδικτυακά https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Version-Control-Information.

Αντί για vcs_info, μπορεί να προτιμούμε το script προτροπής με προσαρμογή (customization) που έρχεται με το Git, με το όνομα git-prompt.sh· βλέπουμε εδώ https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh για περισσότερες πληροφορίες. Το git-prompt.sh είναι συμβατό και με το Bash κα το Zsh.

Το Zsh είναι αρκετά ισχυρό ώστε να υπάρχουν ολόκληρα πλαίσια που είναι αφιερωμένα στο να το καταστήσουν καλύτερο. Ένα από αυτά ονομάζεται "oh-my-zsh" και διατίθεται στη διεύθυνση https://github.com/ohmyzsh/ohmyzsh. Το σύστημα προσθήκης του oh-my-zsh έρχεται με ισχυρή συμπλήρωση με tab για το Git και έχει μια ποικιλία από "θέματα", πολλά από τα οποία εμφανίζουν δεδομένα ελέγχου έκδοσης. Η εικόνα Ένα παράδειγμα ενός θέματος oh-my-zsh είναι μόνο ένα παράδειγμα του τι μπορεί να γίνει με αυτό το σύστημα.

Ένα παράδειγμα ενός θέματος oh-my-zsh
Figure 186. Ένα παράδειγμα ενός θέματος oh-my-zsh