• 社区首页
  • 版块
关闭 zsh 的 auto cd 功能
深度杂谈765个浏览 ·2个评论
电梯直达到第
lookfor
deepin^4
发表于2020-10-11 07:24
楼主
本帖最后由 lookfor 于 2020-10-11 15:56 编辑

原文地址:https://www.cnblogs.com/AkiPeror ... o-cd-gong-neng.html


前段时间切到了zsh环境,用着确实挺好,方便快捷什么的。
尤其是auto cd这个功能,太方便了,想进入某个目录直接敲目录名就好,完全不用先敲cd再敲目录名。

就像这样,轻松进入文件夹,多棒!


现在问题就来了!
如果当前目录下有个文件夹的名字和我的某个命令名字相同会出现什么情况?
答案是不确定,时而自动进入文件夹,时而运行命令……

这一次是进入cmake目录

这一次又运行了cmake


坑爹呢?!
在终端输入man zshoptions可以查询到zsh所有的option的解释
里面有这么一条
AUTO_CD (-J)          If a command is issued that can't be executed as a normal command, and the command is the name of a directory, perform the cd command to that directory. This option is only applicable  if the  option SHIN_STDIN  is set, i.e. if commands are being read from standard input. The option  is  designed for interactive use; it is recommended that cd be used explicitly in scripts to avoid ambiguity. 唔,看起来很像是这货,虽然说是只有在这个命令无法工作的时候才会自动进入文件夹,但是完全没起作用……
这个功能太菜了,我们不要,关掉!

在 .zshrc 里加入
  1. unsetopt AUTO_CD
Copy the Code


回复收藏只看作者
所有回复
lookfor
deepin^4
发表于2020-10-11 08:01
沙发
我的 zsh 配置文件:
  1. ➜  ~ cat .zshrc   

  2. unsetopt AUTO_CD

  3. # vi-mode 显示当前模式
  4. function zle-line-init zle-keymap-select {
  5.     RPS1="${${KEYMAP/vicmd/-- NORMAL --}/(main|viins)/-- INSERT --}"
  6.     RPS2=$RPS1
  7.     zle reset-prompt
  8. }
  9. zle -N zle-line-init
  10. zle -N zle-keymap-select
Copy the Code




忘记、过去
deepin^5
发表于2020-10-11 09:02
板凳
感谢楼主~奇怪的知识又增加了

之前都没注意过这个功能,关掉之后感觉安心多了......
发布帖子

光荣榜

  • 周榜
  • 月榜
  • 总榜