🤖
GitHub Copilot for CLIをfishで使えるようにする
GitHub Copilot for CLI が使えるようになったけれど、github-copilot-cli alias ... で出力されるalias設定がbash/zsh用のためfishでalias設定できないので、fish用のalias設定を自分で書いてみた。
github-copilot-cli alias /bin/bash で出力されるコードを参考にしてこんな感じで書いてみた。
function github-copilot_helper
set -l TMPFILE (mktemp)
trap 'rm -f $TMPFILE' EXIT
if github-copilot-cli $argv[1] "$argv[2..]" --shellout $TMPFILE
if [ -e "$TMPFILE" ]
set -l FIXED_CMD (cat $TMPFILE)
eval "$FIXED_CMD"
else
echo "Apologies! Extracting command failed"
end
else
return 1
end
end
alias ??='github-copilot_helper what-the-shell'
alias git?='github-copilot_helper git-assist'
alias gh?='github-copilot_helper gh-assist'
オリジナルだと、??, git?, gh? という名称でaliasが設定されるけれど、fishで ? が付いたaliasがうまく使えなかったので、それぞれ q, qgit, qgh という名称にしてみた。
fishで ? が付いたaliasを使うためには、? がglob charとして認識されないように、Feature flag を設定する必要がある。下記のように fish_features に qmark-noglob を設定すると、? がglob charとして認識されずに通常の文字として使えるようになる。
set -U fish_features qmark-noglob
- ひとつ前のコミットに戻したい
- リモートブランチを削除したい
といったことをCLIで自然言語で質問できるのは便利。
macOSでは音声入力をONにしておくことでキーボードから日本語入力せずに使うことができるのも便利。


Discussion