Purelineいい感じ
Windows上でGitBash使ってる
いい感じのプロンプトにしたかったのでPurelineを導入
https://github.com/chris-marsh/pureline
Powerlineライクなインターフェイス(↓は公式gitの画像)
でもなんかやたら重い気がする
めっちゃ重い…
コンソールの再表示に2~3秒かかってる気がする…
カスタムしたprofileを作成
git_module が明らかに重いぽい
function git_module {
local git_branch=$(git rev-parse --abbrev-ref HEAD 2> /dev/null)
if [ -n "$git_branch" ]; then
local bg_color="$1"
local fg_color="$2"
local content="${PL_SYMBOLS[git_branch]} $git_branch"
if [ "$PL_GIT_STASH" = true ]; then
local number_stash="$(git stash list 2>/dev/null | wc -l)"
if [ ! "$number_stash" -eq 0 ]; then
content+="${PL_SYMBOLS[git_stash]}$number_stash"
fi
fi
if [ "$PL_GIT_AHEAD" = true ]; then
local number_behind_ahead="$(git rev-list --count --left-right '@{upstream}...HEAD' 2>/dev/null)"
local number_ahead="${number_behind_ahead#* }"
local number_behind="${number_behind_ahead% *}"
if [ ! "0$number_ahead" -eq 0 -o ! "0$number_behind" -eq 0 ]; then
if [ ! "$number_ahead" -eq 0 ]; then
content+="${PL_SYMBOLS[git_ahead]}$number_ahead"
fi
if [ ! "$number_behind" -eq 0 ]; then
content+="${PL_SYMBOLS[git_behind]}$number_behind"
fi
fi
fi
if [ "$PL_GIT_STAGED" = true ]; then
local number_staged="$(git diff --staged --name-only --diff-filter=AM 2> /dev/null | wc -l)"
if [ ! "$number_staged" -eq "0" ]; then
content+=" ${PL_SYMBOLS[soft_separator]} ${PL_SYMBOLS[git_staged]}$number_staged"
fi
fi
if [ "$PL_GIT_CONFLICTS" = true ]; then
local number_conflicts="$(git diff --name-only --diff-filter=U 2> /dev/null | wc -l)"
if [ ! "$number_conflicts" -eq "0" ]; then
content+=" ${PL_SYMBOLS[soft_separator]} ${PL_SYMBOLS[git_conflicts]}$number_conflicts"
fi
fi
if [ "$PL_GIT_MODIFIED" = true ]; then
local number_modified="$(git diff --name-only --diff-filter=M 2> /dev/null | wc -l )"
if [ ! "$number_modified" -eq "0" ]; then
content+=" ${PL_SYMBOLS[soft_separator]} ${PL_SYMBOLS[git_modified]}$number_modified"
fi
fi
if [ "$PL_GIT_UNTRACKED" = true ]; then
local number_untracked="$(git ls-files --other --exclude-standard | wc -l)"
if [ ! "$number_untracked" -eq "0" ]; then
content+=" ${PL_SYMBOLS[soft_separator]} ${PL_SYMBOLS[git_untracked]}$number_untracked"
fi
fi
if [ -n "$(git status --porcelain)" ]; then
if [ -n "$PL_GIT_DIRTY_FG" ]; then
fg_color="$PL_GIT_DIRTY_FG"
fi
if [ -n "$PL_GIT_DIRTY_BG" ]; then
bg_color="$PL_GIT_DIRTY_BG"
fi
fi
PS1+="$(section_end $fg_color $bg_color)"
PS1+="$(section_content $fg_color $bg_color " $content ")"
__last_color="$bg_color"
fi
}
- 一回の操作で何回もgitコマンド打ってる…
- 詳細を見たかったら自分でコマンド打つなりGUIツール使うなりするのでbranch以外の表示を全部disableに
- configで指定している$PL_GIT_STASHみたいなのを全部falseに
他にも使わなそうなmoduleをdisableに(↓このへん)
- time_module
- battery_module
- virtual_env_module
- read_only_module
- background_jobs_module
- newline_module
- prompt_module
だいぶ軽くなった気がする
ローカルにcloneして↓のようにして.bashrcあたりで読み込めばOK
source [ClonedPath]/pureline/pureline
source [ClonedPath]/pureline/configs/custom.conf
その他
gitコマンドの実行結果をキャッシュするようにして機能削らなくても軽くしたりできないのかな?