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 s
or z -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
再次更新:zb 命令支持点点点。
zb .. = cd ..
zb ... = cd ../..
zb .... = cd ../../..
zb ..... = cd ../../../..
zb ..5 = cd (..) x 5
zb ..99 = cd (..) x 99
支持所有平台,包括 windows cmd,power shell
1
xiaket 2019-02-04 06:16:08 +08:00 6
```
alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' ``` 好吧我知道 md 在回复里是不可用的, 不过对于一些人, 这种 alias 会更易用些. |
3
skywind3000 OP @xiaket 这样最大问题就是你要数需要几个点。
/home/user/project/src/org/main/site/utils/file/reader/whatever 比如你在 whatever,你要回到 src,你是不是要停下来先看看当前目录?再对照着数需要多少个点? z -b 没有这个负担。 |
4
xiaket 2019-02-04 09:32:45 +08:00
@skywind3000 我完全同意你的意见, 所以我觉得这儿的 trade-off 是要不要精确到那个目录. 比如我经常进到 python venv 的目录里面去, 要跳出来的时候(如果我在里面切过目录, `cd -`不能工作时)比较讨厌. 按我现在的习惯, 我会先一气打几个点回车, 然后再看下一步是要跳两层还是三层. 我的 prompt 会显示当前目录, 所以于我而言这比记忆某个命令的参数更容易. 我能理解这个需求的出发点和实现方式, 只不过我觉得直接无脑打点更适合我的编程方式. 谢谢
|
5
Narcissu5 2019-02-04 09:38:05 +08:00
oh my zsh ?
|
6
skywind3000 OP @Narcissu5 不是 oh my zsh,这个工具可以再所有 shell 上使用,包括 bash, zsh, fish shell, powershell 还有 windows cmd
|
7
skywind3000 OP @xiaket 这个参数是一次性记忆的,z -b 可以 alias 成 zb,上面的例子,回到 src 目录只需要 zb sr 就回去了,比你打点还简单啊。
|
8
ttgo 2019-02-04 11:34:13 +08:00
你可以也加上 zb 点点点 的功能啊
|
9
jadeity 2019-02-04 11:38:50 +08:00
试用过各种 shell 之后,对于习惯复制粘贴的我,还是 zsh 最好用。
|
10
skywind3000 OP @ttgo 哈哈,堵上他们的嘴,已经加上了,zb .....
|
11
masker 2019-02-07 12:12:57 +08:00
alias
|
12
skywind3000 OP @masker alias 有管理负担啊。
|