对不起,如果我的 google fu 太弱了,但是:我只是想调整 zsh 以便我可以 tab 完成
someappname -s
使用 ~/somedir 的内容(文件名)
例如:
someapp -s f<tab>
应该根据 ~/somedir 中以字母 f 开头的文件循环完成。所以我最终可能会得到一个命令行,例如:“someapp -s foobar”。
对不起,如果我的 google fu 太弱了,但是:我只是想调整 zsh 以便我可以 tab 完成
someappname -s
使用 ~/somedir 的内容(文件名)
例如:
someapp -s f<tab>
应该根据 ~/somedir 中以字母 f 开头的文件循环完成。所以我最终可能会得到一个命令行,例如:“someapp -s foobar”。
更简单的方法:
compdef "_files -W ~/somedir -/" someappname
好吧,我解决了这个问题:(github上的源代码)
#compdef diakonos
typeset -A opt_args
local context state line
local sessiondir
sessiondir=${HOME}/.diakonos/sessions
_arguments -n -s -S \
"-s[specify session]:session:_files -W $sessiondir" \
"*:file:_files" \
&& return 0
return 1
我参考了http://www.linux-mag.com/id/1106(需要 [免费] 注册才能阅读),并从 freenode 上的#zsh 获得帮助。