为 bash/zsh 完成设置环境变量

为 bash/zsh 完成设置环境变量

我使用 gnu pass 和 bash/zsh 补全功能。这意味着当我输入时,pass a[TAB]shell 会建议我可以使用哪些以 开头的密码a

我有两个 gnu-pass 目录,当我想使用非默认目录时,我需要设置PASSWORD_STORE_DIR。要获得 shell 完成,我需要export PASSWORD_STORE_DIR=~/.password-store-non-default然后像平常一样使用 pass。

这很麻烦,因为我经常需要在两个目录之间切换。

有没有办法可以创建一个别名或 shell 命令来设置该变量、提供完成操作,然后将该变量改回其原始值?

例如

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按下。)

相关内容