Chapters ▾ 2nd Edition

A1.7 پیوست A: گیت در محیط‌های دیگر (Git in Other Environments) - Git در Zsh (Git in Zsh)

Git در Zsh (Git in Zsh)

Zsh همچنین همراه با یک کتابخانه تکمیل تب برای Git عرضه می‌شود. برای استفاده از آن، کافی است در فایل .zshrc خود دستور autoload -Uz compinit && compinit را اجرا کنید. رابط 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

تکمیل‌های تب مبهم فقط فهرست نمی‌شوند؛ توضیحات مفیدی دارند و می‌توانید با فشردن مکرر تب به‌صورت گرافیکی در فهرست جابه‌جا شوید. این قابلیت برای دستورات Git، آرگومان‌های آن‌ها و نام‌های اشیاء داخل مخزن (مثل refs و remotes)، همچنین نام فایل‌ها و همه چیزهای دیگری که Zsh می‌تواند با تب تکمیل کند، کار می‌کند.

Zsh همراه با یک چارچوب برای گرفتن اطلاعات از سیستم‌های کنترل نسخه به نام 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 را غیرفعال کرده‌اید، فعال کنید. این به‌شکل تقریبی شبیه خواهد بود:

Customized `zsh` prompt
نمودار 185. Customized zsh prompt

برای اطلاعات بیشتر درباره vcs_info، مستندات آن را در صفحه راهنمای zshcontrib(1) ببینید یا به‌صورت آنلاین در https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Version-Control-Information مراجعه کنید.

به‌جای vcs_info ممکن است اسکریپت سفارشی‌سازی پرامپت که همراه 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 همراه با تکمیل تب قدرتمند برای Git عرضه می‌شود و مجموعه‌ای از "قالب‌های" پرامپت را دارد که بسیاری‌شان اطلاعات کنترل نسخه را نمایش می‌دهند. An example of an oh-my-zsh theme تنها یکی از نمونه‌های کاری است که می‌توان با این سیستم انجام داد.

An example of an oh-my-zsh theme
نمودار 186. An example of an oh-my-zsh theme
scroll-to-top