Git
章节 ▾ 第二版

A1.7 附录 A:其他环境中的 Git - Zsh 中的 Git

Zsh 中的 Git

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 命令、它们的论点以及存储库中事物的名称(如引用和远程),以及文件名和 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'

这会在终端窗口的右侧显示当前分支,只要你的 shell 位于 Git 存储库中。当然,左侧也受支持;只需取消对 PROMPT 的赋值注释。它看起来有点像这样

Customized `zsh` prompt
图 185. 自定义的 zsh 提示符

有关 vcs_info 的更多信息,请查看 zshcontrib(1) 手册页中的文档,或在线查看 https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Version-Control-Information

你可以选择使用 Git 附带的提示符自定义脚本 git-prompt.sh,而不是 vcs_info;有关详细信息,请参阅 https://github.com/git/git/blob/master/contrib/completion/git-prompt.shgit-prompt.sh 与 Bash 和 Zsh 兼容。

Zsh 足够强大,以至于有专门用于改进它的整个框架。其中之一称为“oh-my-zsh”,可以在 https://github.com/ohmyzsh/ohmyzsh 找到。oh-my-zsh 的插件系统附带强大的 Git 制表符补全,并且它有各种提示符“主题”,其中许多显示版本控制数据。 oh-my-zsh 主题示例 只是使用此系统可以完成的一个示例。

An example of an oh-my-zsh theme
图 186. oh-my-zsh 主题示例
scroll-to-top