带标签完成的Zsh书签目录?

时间:2012-02-17 15:07:23

标签: zsh zshrc zsh-completion

我想要的是什么:

cd c/ra<tab>完成至~/code/rails-appcd c/<tab>显示~/code

内的目录列表


我现在有什么:

如果我有一个目录c ra<tab>并且c rails-app~/code/rails-app

中显示目录列表,则

c <tab>完成~/code

在我的.zshrc中添加此内容:

c() { cd ~/code/$1; }
_c() { _files -W ~/code -/; }
compdef _c c


这个工具看起来很有前途:https://github.com/flavio/jump但我想要更轻量级的东西。

1 个答案:

答案 0 :(得分:2)

您所描述的标签完成(至少对于目录而言)应该由zsh完成,而无需编写zsh函数。

例如,

This link注意到,在提示符下键入/u/l/b然后 tab 会扩展为/usr/local/bin

这对我有用 - 如果我创建一个目录~/code/rails-app

zsh% ls ~/code
another-app       another-dir rails-app
zsh% ls ~/code/rails-app
one two

然后:

zsh% cd c/ra<TAB> # this expands to 'cd code/rails-app'
zsh% cd c/<TAB><TAB> # Double tab, one to expand "c" to "code", 
zsh% #               # second gives me the zsh-completion menu

我无法指出这是zsh选项 - 我使用了相当严格的~/.zshrcoh-my-zsh位。此可能zsh给出的功能,无需启用;如果没有,第一个链接或oh-my-zsh甚至some version of the ZSH manual中某处的详细信息应该会有所帮助。 (我发现手册有点......压倒性,但至少可以说)。

我不相信你需要编写一个函数来实现这种行为 - zsh绝对能够做到。