z.lua 新增 "-b" 选项可以快速回到某一级父目录,避免重复的输入 "cd ../../.."。
-
(没有参数)
cd到项目根目录:使用
"z -b"后面不跟任何参数,z.lua 会寻找当前项目的 checkout 目录(有.git/.hg/.svn的地方) 然后cd过去。 -
(单个参数)
cd到离当前目录最近的以关键字开头的父目录:假设你在
/home/user/project/src/org/main/site/utils/file/reader/whatever然后你想快速回到site目录,只需要输入:
z -b site实际上,可简化为
z -b <开头的几个字母>比如z -b sorz -b si。如果当前存在多级父目录同时包含你输入的关键词,
z -b xxx会将你到离你最近的那一层父目录。 -
(两个参数) 将当前路径中的第一个关键词替换为第二个关键词。
为了使用简便,我们继续将 z -b 取个别名成 zb:
# 一直向上退到项目根目录(就是里面有一个 .git 目录的地方)
~/github/lorem/src/public$ zb
=> cd ~/github/lorem
# cd 到第一个以 g 开头的父目录
~/github/vimium/src/public$ zb g
=> cd ~/github
# 将 jekyll 替换为 ghost
~/github/jekyll/test$ zb jekyll ghost
=> cd ~/github/ghost/test
向后跳转同样也支持环境变量 $_ZL_ECHO(用来显示跳转结果),这样为搭配其他工具提供了可能性(并不需要改变当前工作目录):
# 假设我们位于 ~/github/vim/src/libvterm
# 打开 $_ZL_ECHO 用于在每次跳转后调用一次 pwd 显示当前目录
$ _ZL_ECHO=1
# 看看我项目根目录(有 .git 那个)目录里有什么?
$ ls -l `zb`
=> ls -l ~/github/vim
# 检查 "<项目根目录>/logs" 下面的日志
$ tail -f `zb`/logs/error.log
=> tail -f ~/github/vim/logs/error.log
# 查看一下某一级父目录里有些啥
$ ls -l `zb git`
=> ls -l ~/github