🔨

Windows Terminal + zsh + git で peco れないとき

2022/02/05に公開

Windows Terminal + Git for Windows SDK + zsh で git コマンドの結果を peco りたいけど、画面が崩れてキー入力も受けなくなって Terminal を閉じるしかない事が発生するようにいつのまにかなってしまって困る。ブランチが大量にあることに起因しているのかと思いきやそうでもなく、sh で返す量を調整してから peco に渡してもダメだったので間に挟むプログラムを作ってみた。

.zshrc

function peco_insert_selected_git_files(){
    BUFFER="  $(pecogit status --porcelain | peco | awk -F ' ' '{print $NF}' | tr '\n' ' ')"
    CURSOR=0
    zle reset-prompt
}
zle -N peco_insert_selected_git_files
bindkey "^x^l" peco_insert_selected_git_files

function peco-select-local-branch() {
    BUFFER="  $(pecogit branch | peco)"
    CURSOR=0
    zle reset-prompt
}
zle -N peco-select-local-branch
bindkey '^x^b' peco-select-local-branch

peco-select-branch() {
    BUFFER="  $(pecogit branch -a --sort=-authordate -n 1000 | peco)"
    CURSOR=0
    zle reset-prompt
}
zle -N peco-select-branch
bindkey '^x^a' peco-select-branch

git branch

  • ブランチ名が英数のみのものだけを対象とする (全角文字は除去)
  • ブランチ数を制限するためのオプション -n を独自追加
$ pecogit branch -a --sort=-authordate -n 1000

config

~/.config/pecogit/config.json

git branch で無視したいもの設定

{
    "branch_ignores":["cherry-pick", "revert-"]
}

まとめ

画面が崩れないようになったけど何故なのかがよく分からないまま動いてて今に至る。

GitHubで編集を提案

Discussion