🤖
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