输入【Git】命令行中敲入git checkout 很麻烦
如果经常使用Git命令,不能使用分支名称或命令的Tab补完可能会让人感到有些不方便。
特别是每次切换到一个新的分支时,要完整地输入它的名称真的很麻烦。
在这篇文章中,我们将具体介绍解决这种不便的方法。
目录
-
- 下载所需文件
-
- 在.zshrc文件中添加设置项
-
- 创建原始的提示符设计
-
- 遇到的问题
- 参考资料
下载所需文件。
首先,需要下载必要的文件群。
mkdir ~/.zsh
cd ~/.zsh
curl -o git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
curl -o git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
curl -o _git https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh
在.zshrc文件中添加配置项
接下来,我们要在.zshrc文件中添加配置。
# ~/.zsh/git-prompt.sh をソースファイルとして読み込む
source ~/.zsh/git-prompt.sh
# fpathに~/.zshディレクトリを追加
fpath=(~/.zsh $fpath)
# Gitのコマンド補完スクリプトの場所を指定
zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bash
# zshのコマンド補完を初期化
autoload -Uz compinit && compinit -u
# Gitのプロンプトに変更がある場合に表示する設定
GIT_PS1_SHOWDIRTYSTATE=true
# プロンプトの文字列が実行時に評価されるように設定
setopt PROMPT_SUBST
创建原始的提示设计
接下来,我们要设计自己喜欢的提示符。下面是一个示例,显示当前目录和Git分支名称。
# git_prompt関数を定義。現在のGitブランチ名を取得して、それをプロンプトに表示するための文字列を返す。
git_prompt() {
# __git_ps1はGitのプロンプトスクリプトによって提供される関数。"%s"を渡すと現在のブランチ名のみを返す。
local branch_name="$(__git_ps1 "%s")"
# ブランチ名が空でない場合(Gitリポジトリ内である場合)、" on [ブランチ名]"という形式の文字列をechoする。
if [[ -n $branch_name ]]; then
echo " on $branch_name"
else
# Gitリポジトリ外である場合は、空の文字列をechoする。
echo " "
fi
}
# プロンプトの見た目を設定。カレントディレクトリをシアン色で、git_prompt関数の結果(ブランチ名)を赤色で表示する。
PS1='%F{cyan}%~%f%F{red}$(git_prompt)%f\$ '
结果就是这样的感觉。
很方便使用,能够有效地补充分支。
迷上了追溯
在定制提示时,遇到了一个问题。
在使用__git_ps1函数(定义在git-prompt.sh中)时,它与我先前创建的别名发生了冲突。具体原因是以下的别名:
alias test="some process sample_test.out"
通过这个别名,显示了以下类似的错误信息。
dyld[58984]: Symbol not found: __ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13get_allocatorEv
Referenced from: <EE118444-4D57-3565-AE96-6323D4C54F0A> /usr/local/bin/sample_test.out
Expected in: <3F5CB4D5-26D1-3E43-B241-2688FF0A67BD> /usr/lib/libstdc++.6.dylib
dyld[58985
文献引用
-
- 【zsh】絶対やるべき!ターミナルでgitのブランチ名を表示&補完【git-prompt / git-completion】
- 【2ステップ】Gitコマンドでtab補完を有効にする