首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZSH + Prezto: CD选项卡完成发行

ZSH + Prezto: CD选项卡完成发行
EN

Stack Overflow用户
提问于 2014-11-23 10:47:42
回答 1查看 992关注 0票数 0

我考虑切换到zsh和prezto已经有一段时间了,但是我想先解决一些讨厌的问题。

其中最大的一个事实是,“cd”的选项卡完成似乎有点混乱。例如,我的主目录中有一个名为" git“的目录,用于我的git项目,我经常希望从主目录移到它,也就是说,我编写如下:

代码语言:javascript
复制
~ >>> cd g[TAB]
~ >>> cd git

因为"git“是唯一以"g”开头的文件夹,我显然希望这是选项卡完成的结果。但是,通过使用ZSH和prezto,它可以这样完成它:

代码语言:javascript
复制
~ >>> cd g[TAB]
~ >>> cd gnats

再次使用选项卡也将尝试完成一个子文件夹的“蚊虫”,这两者都不存在!

到目前为止,我已经发现这很可能是由prezto引起的,因为禁用它会恢复到预期的行为。

有什么想法吗?我需要添加什么配置来修复这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-25 08:20:32

最有可能的罪魁祸首是shell选项CDABLE_VARS。您可以检查它是否使用setopt | grep cdablevars设置。由于它不是默认设置,所以您可以找到在prezto中设置它的位置,或者在prezto来源之后使用setopt nocdablevars显式地取消设置。

解释:

如果设置了CDABLE_VARS,zsh将处理非目录的cd参数,而不是以/开头的参数,就好像它们以~开头一样。这扩展到了cd的自动完成。

如果目录名以~开头(正如CDABLE_VARS所暗示的那样),zsh将检查到第一个/的元素是否可以以几种不同的方式进行替换。在您的示例中,~gnats被解释为静态命名目录,可以通过以下方式定义该目录:

  1. 自动为主目录:~someone是用户的主目录某人。
  2. 通过将shell参数设置为以/开头的字符串值: %某处=/若干/目录%打印~某处/部分/目录
  3. 通过使用hash -dhash -d SOMEWHERE=/some/directory

我猜想,在这种情况下,它是用户蚊虫的主目录。据我所知,它至少是在Debian和Ubuntu上默认创建的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27088092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档