Chapters ▾ 2nd Edition

A1.7 Bilaga A: Git i andra miljöer - Git i Zsh

Git i Zsh

Zsh levereras också med ett bibliotek för tab‑komplettering för Git. För att använda det kör du autoload -Uz compinit && compinit i din .zshrc. Zsh‑gränssnittet är lite kraftfullare än Bash‑varianten:

$ 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

Tvetydiga tab‑kompletteringar listas inte bara; de har hjälpsamma beskrivningar, och du kan navigera listan grafiskt genom att trycka tab upprepade gånger. Detta fungerar med Git‑kommandon, deras argument och namn på saker i kodförrådet (som refs och fjärrkodförråd), samt filnamn och allt annat som Zsh kan tab‑komplettera.

Zsh levereras med ett ramverk för att hämta information från versionshanteringssystemet vcs_info. För att inkludera grennamnet i prompten på höger sida lägger du till dessa rader i din ~/.zshrc‑fil:

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'

Detta resulterar i en visning av aktuell gren på höger sida av terminalfönstret när ditt skal befinner sig i ett Git‑kodförråd. Vänster sida stöds också förstås; avkommentera bara tilldelningen till PROMPT. Det ser ut ungefär så här:

Anpassad `zsh`‑prompt
Figur 183. Anpassad zsh‑prompt

För mer information om vcs_info, se dokumentationen i manualsidan zshcontrib(1) eller på webben: https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Version-Control-Information.

I stället för vcs_info kan du föredra prompt‑anpassningsskriptet som följer med Git, som heter git-prompt.sh; se https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh för detaljer. git-prompt.sh är kompatibelt med både Bash och Zsh.

Zsh är tillräckligt kraftfullt för att det finns hela ramverk som är dedikerade till att bygga vidare på det. Ett av dem heter "oh-my-zsh" och finns på https://github.com/ohmyzsh/ohmyzsh. oh-my-zsh:s insticksystem levereras med kraftfull Git‑tabbkomplettering och har en mängd prompt‑"teman", många av vilka visar versionshanteringsdata. Ett exempel på ett oh-my-zsh‑tema är bara ett exempel på vad man kan göra med detta system.

Ett exempel på ett oh-my-zsh‑tema
Figur 184. Ett exempel på ett oh-my-zsh‑tema