Add once

何时更新数据呢?默认情况下,z.lua 会在每次显示命令提示符时记录当前路径(和 z.sh 一致),但是还提供了一个 $_ZL_ADD_ONCE 的环境变量选项,设置成 1 的话,只有当前路径改变,才会将新路径添加到数据库。

除了设置环境变量外,不同的 shell 下还可以在初始化时增加 “once” 参数来达到相同目的,比如:

  1. eval "$(lua /path/to/z.lua --init bash once enhanced)"
  2. eval "$(lua /path/to/z.lua --init zsh once enhanced)"
  3. source (lua /path/to/z.lua --init fish once enhanced | psub)

将会同时启用增强匹配算法和 once 机制,在一些比较慢的硬件下(路由器,cygwin,msys),使用该机制将有效的提升性能。其实 autojump 在 zsh 下会使用类似 once 的机制,而 bash 下则和 z.sh 类似。

从效果上来讲,z.sh 的模式(关闭 once)强调的是 “在某路径下工作的时间长短”,而 autojump 的模式(启用 once)则强调 “进入某路径的次数多少”。