![bash/zsh 補完のための環境変数の設定](https://rvso.com/image/1628432/bash%2Fzsh%20%E8%A3%9C%E5%AE%8C%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%AE%E8%A8%AD%E5%AE%9A.png)
私は、bash/zsh 補完機能付きの gnu pass を使用しています。つまり、入力すると、pass a[TAB]
シェルが で始まる使用可能なパスワードを提案しますa
。
2 つの gnu-pass ディレクトリがあり、デフォルト以外のディレクトリを使用する場合は、 を設定する必要がありますPASSWORD_STORE_DIR
。シェル補完を取得するには、 を実行してから、通常どおり pass を使用する必要がありますexport PASSWORD_STORE_DIR=~/.password-store-non-default
。
2 つのディレクトリ間を頻繁に切り替える必要があるため、これは面倒です。
その変数を設定し、補完を提供して、その変数を元の値に戻すエイリアスまたはシェル コマンドを作成する方法はありますか?
例えば
alias otherpass=...
otherpass a[TAB]
別の を設定せずに補完を提供しますPASSWORD_STORE_DIR
。
答え1
Zsh では、次のようにキーボード ショートカットをバインドするだけです。
# Bind the command to Ctrl-P.
bindkey '^P' complete-password
# Create a completion widget for the command.
zle -C complete-password complete-word complete-password
# Create a function to implement the widget.
complete-password() {
export PASSWORD_STORE_DIR=~/.password-store-non-default
_main_complete $@
unset PASSWORD_STORE_DIR
}
次に、 を押すと、CtrlPデフォルト以外のパスワード ストアで補完が実行されます。(Tab押す必要はありません。)