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