bash/zsh 補完のための環境変数の設定

bash/zsh 補完のための環境変数の設定

私は、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押す必要はありません。)

関連情報