Zsh 完成安装(/run/media/DISK-LABEL)?

Zsh 完成安装(/run/media/DISK-LABEL)?

我正在寻找zsh将磁盘标签扩展到挂载点的功能:

示例:我的磁盘DISK-LABEL1上安装有标签/run/media/god/DISK-LABEL1

是否有一个插件可以将输入 Like: 扩展 cat //DISK-LA<Tab>cat /run/media/god/DISK-LABEL1

//“被选择作为触发这种类型的自动完成的示例......

答案1

如果你真的想触发完成//,我想你必须修改_path_files。我不推荐它。

或者也许可以通过定义file-patterns风格,但我不知道如何。

如果您god为 指定一个目录/run/media/god,那么您可以使用~god来引用该目录。无论您是否使用完成,这都有效。这/run/media/god会产生如~god您的提示中所示的副作用。

hash -d god=/run/media/god

答案2

一种方法是定义一个函数来执行您等待的操作:

mountbylabel () {
  mount /run/media/god/$1
}

并将其放入您的.zshrc.然后,为其创建一个完成函数:

#compdef mountbylabel

compadd "${(@f)$(ls /run/media/god)}"

_mountbylabel并将其放入fpath 内某个名为的文件中。我将所有完成功能文件存储在其中~/.zsh/completions/并具有

fpath=(~/.zsh/completions $fpath)

在我的.zshrc

相关内容