Zsh如何对"cd .."进行自动补全

41

如何配置Zsh的tab键自动补全,以便当我输入cd ..<TAB>时它会扩展为cd ../,然后再次按下<TAB>键,会提示父文件夹中的文件夹供自动补全?

例如,它应该显示与输入cd Documents<TAB>相同的行为,即将其扩展为cd Documents/,然后再次按下<TAB>键,会提示Documents文件夹中的文件夹供自动补全。

作为配置的起点,我使用一个空的.zshrc和来自MacPorts的Zsh 4.3.9版本。


我有很长一段时间对此持怀疑态度。 - JuanPablo
3个回答

77

Debian不稳定版和Ubuntu Jaunty出现同样的问题,它们都使用zsh 4.3.9。我知道有多个人使用不同的配置也遇到了这个问题。

在阅读http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=514152后,我添加了以下内容:

zstyle ':completion:*' special-dirs true

我更新了我的配置文件,现在一切都正常工作。


15
man zshcompsys也建议使用以下代码: zstyle -e ':completion:*' special-dirs '[[ $PREFIX = (../)#(|.|..) ]] && reply=(..)',这可以避免始终建议使用"./"和"../"。 - exic
@exic,你的代码和答案有什么不同?你的代码在两个点后按Tab键后每次都会多出一个斜杠。 - Timo
为了清晰起见,把这个加入到.zshrc文件中,如果加入到.zprofile文件中是无效的。 - TMOTTM

11
将以下内容添加到你的 ~/.zshrc 文件中:

Put this into your ~/.zshrc:

autoload -Uz compinit
compinit
还有一个针对Mac OS X的zsh函数/配置项目,在http://code.google.com/p/zsh-templates-osx/上。个人认为使用整个软件包有些浪费,但是可以从中挑选一些技巧、函数、自动完成等,并创建自己的.zshrc文件,我觉得很有用。

谢谢,这正是我想要的行为配置。 - x-way
你的代码中选项 z 是什么意思? - Léo Léopold Hertz 준영
autoload 命令行选项: -U -- 抑制函数别名扩展 -k -- 标记函数以进行 ksh 风格的自动加载 -t -- 打开函数执行跟踪 -w -- 指定参数是使用 zcompile 编译的文件 -z -- 标记函数以进行 zsh 风格的自动加载 - f3lix
5
但是...我已经在我的.zshrc文件中设置过了,但是我的 ... 文件夹没有被自动补全。 :P 这是怎么回事? - Victor Zamanian
1
我了解到,优先选择得票最高的答案,并且根据@VictorZamanian的说法,该答案并不总是有效,为什么要保留这个答案呢? - Timo

-15

这个答案可能有用,也可能没用 - 切换到 bash,它可以直接完成你想要的功能。


15
这有点像告诉一个使用vim的用户切换到emacs,因为他找不到配置开关... 在我看来,zsh比bash更强大,而且还配有一个很棒的自动补全功能。你只需要激活它... - f3lix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接