别让 cd 浪费你的时间

终端下工作最烦躁的就是路径切换,没有自动路径切换的帮助,就像在泥里走路,于是有了各种 autojump / z / fasd 等工具来提升路径切换的效率,今天向大家介绍一个更好用的工具:z.lua,用熟练了以后就像终端里溜冰,路劲切换从此指哪打哪。

z.lua 是一个会学习你使用习惯的 cd 命令,它会跟踪你在 shell 下访问过的路径,通过一套称为 Frecent 的机制(源自 Mozilla),经过一段简短的学习之后,z.lua 会帮你跳转到所有匹配正则关键字的路径里 Frecent 值最高的那条路径去。

正则将按顺序进行匹配,“z foo bar” 可以匹配到 /foo/bar ,但是不能匹配 /bar/foo。

特性说明:
  • 性能比 z.sh 快三倍,比 fasd / autojump 快十倍以上。
  • 支持 Posix Shell:bash, zsh, dash, sh, ash, busybox 等等。
  • 支持 Fish Shell,Power Shell 和 Windows cmd。
  • 使用增强匹配算法,更准确的带你去到你想去的地方。
  • 低占用,能够仅在当前路径改变时才更新数据库(将 $_ZL_ADD_ONCE 设成 1)。
  • 交互选择模式,如果有多个匹配结果的话,跳转前允许你进行选择。
  • 交互选择模式,支持使用 fzf 进行可视化结果筛选(可选)。
  • 快速跳转到父目录,或者项目根目录,代替反复 “cd …/…/…" 。
  • 为不同的操作系统,不同的 Shell 程序提供统一的使用体验。
  • 兼容 lua 5.1, 5.2 和 5.3 以上版本。
  • 自包含且无额外依赖,单个 z.lua 文件完成所有工作。
软件安装:

将下面对应语句添加到你的 .bashrc / .zshrc / .profile 或者对应 shell 的初始化脚本末尾:

eval "$(lua /path/to/z.lua --init bash enhanced once echo)"    # BASH 初始化
eval "$(lua /path/to/z.lua --init zsh enhanced once echo)"     # ZSH 初始化
eval "$(lua /path/to/z.lua --init posix enhanced once echo)"   # 其他 Posix Shell 初始化
source (lua /path/to/z.lua --init fish enhanced once echo | psub)  # Fish Shell 初始化
iex ($(lua /path/to/z.lua --init powershell enhanced once echo) -join "`n") # Power Shell 初始化

然后重新登陆,即可使用。

用户评价:

“我喜欢它的原理,我在命令行下面的行为十分有规律,并且我十分懒惰,懒得管理和维护一套书签或者路径别名。“

“总之,z.lua 做到了它所宣称的目标。如果你需要快速的在目录间切换,它可能是最好的选择。“

”我终于可以在自己的树莓派1上使用 autojump 类似的功能了,而不用像以前传统 autojump 那样每次打开终端都要等待 30 秒。”

基本使用:

cd 到一个包含 foo 的目录:

z foo

cd 到一个以 foo 结尾的目录:

z foo$

对长路径使用多个关键字进行匹配:
假设路径历史数据库(~/.zlua)中有两条记录:

10   /home/user/work/inbox
30   /home/user/mail/inbox

"z in"将会跳转到 /home/user/mail/inbox 因为它有更高的权重,同时你可以传递更多参数给 z.lua 来更加精确的指明,如 “z w in” 则会让你跳到 /home/user/work/inbox。

交互选择:

使用 -i 参数进行跳转时, 如果有多个匹配结果,那么 z.lua 会给你显示一个列表:

$ z -i soft
3: 0.25   /home/data/software
2: 3.75   /home/skywind/tmp/comma/software
1: 21     /home/skywind/software
> {光标位置}

然后你按照最前面的序号输入你想要去的地方,比如输入 3 就会进入 /home/data/software。如果你不输入任何东西直接按回车,那么将会直接退出而不进行任何跳转。

PS:交互选择同时支持 “-I” 参数(大写 i),让你可以使用 fzf 在多项结果进行快速选择(如果系统里面安装了的话)。

快速回到父目录:

“-b” 选项可快速回到某一级父目录,避免重复输入 “cd …/…/…”,一般把 “z -b” 别名成 “zb” 命令:

  • (没有参数):cd 到项目根目录,即跳转到父目录中包含 (.git/.svn/.hg) 的地方。
  • (单个参数):cd 到最近一级以关键字开头的父目录中。
  • (两个参数):对当前目录进行字符串替换,然后 cd 过去。

使用举例:

# 一直向上退到项目根目录(就是里面有一个 .git 目录的地方)
~/github/lorem/src/public$ zb
  => cd ~/github/lorem

# cd 到第一个以 g 开头的父目录
~/github/vimium/src/public$ zb g
  => cd ~/github

# 快速回到 site 目录
~/github/demo/src/org/main/site/utils/file/reader/whatever$ zb si
  => cd ~/github/demo/src/org/main/site

# 将 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

Bonus:“zb …” 相当于 “cd …”,“zb …” 相当于 “cd …/…”,而 “zb …” 相当于 “cd …/…/…” 等等。 最后 “zb …20” 等同于调用 “cd …” 二十次。

常用技巧:

推荐一些常用别名,放在你的配置文件中:

alias zc='z -c' # 严格匹配当前路径的子路径
alias zz='z -i' # 使用交互式选择模式
alias zf='z -I' # 使用 fzf 对多个结果进行选择
alias zb='z -b' # 快速回到父目录

z.lua 可以方便的导入 z.sh 的数据(他们格式相同):

cat ~/.z >> ~/.zlua

还可以导入 autojump 的数据:

FN="$HOME/.local/share/autojump/autojump.txt"
awk -F '\t' '{print $2 "|" $1 "|" 0}' $FN >> ~/.zlua

更多内容,参考项目文档:

https://github.com/skywind3000/z.lua

<think>好的,我需要帮用户找到通过有效使用API帮助文档减少开发时间浪费的方法。首先,我应该回忆用户提供的引用内容,看看有没有相关的信息。 引用[1]提到Stoplight使用OpenAPI生成交互式文档,开发者可以直接在文档里测试API端点,这样边学边测能提高采用率。这可能意味着交互式文档能减少来回测试的时间。引用[3]说开发者不愿写文档因为短期回报低,但好的文档能避免后续问题,可能需要强调维护文档的重要性。引用[2]提到REST API模板优化流程,可能涉及结构化和自动化工具的使用。 接下来,我需要整理出几个有效使用API文档的方法。首先,交互式测试功能,允许开发者直接在文档里调用API,这样能快速验证接口,减少手动测试的时间。其次,文档的实时同步,确保文档和API更新一致,避免因过时文档导致的错误。然后,结构化导航和搜索功能,帮助开发者快速找到所需信息,减少查找时间。代码生成和自动化工具,比如根据文档自动生成客户端代码,节省手动编写的时间。示例和场景化说明也很重要,提供具体用例帮助理解。最后,强调维护文档的重要性,定期更新,结合自动化工具减少维护成本。 还需要考虑用户可能遇到的问题,比如文档不同步、缺乏示例、没有交互功能等,针对这些提出解决方法。同时,引用中的例子如Stoplight的交互式文档和REST API模板可以作为具体建议。 确保回答结构清晰,分点说明,每个点都结合引用内容,并在末尾添加相关问题。需要检查是否符合用户的要求,比如使用正确的中文和LaTeX格式,但用户的问题不涉及数学公式,可能不需要使用。最后生成的相关问题要围绕API文档的使用和优化展开。</think>### 如何通过有效使用API帮助文档减少开发时间浪费? #### 1. **优先选择交互式文档** 通过支持实时测试的API文档(如OpenAPI规范生成的文档),开发者可以直接在文档界面调用API并查看响应结果,无需手动编写测试代码或使用Postman等工具。这种方式能快速验证接口功能,避免因参数错误或接口逻辑误解导致的返工[^1]。 **示例工具**: Stoplight、Swagger UI。 #### 2. **利用文档的实时同步特性** 选择与代码库联动的文档工具(如Swagger通过代码注解生成文档),确保文档与API实现严格同步。这能避免因文档过时导致的开发方向错误,减少调试时间[^1][^2]。 **实现方法**: 在代码中添加注解,通过CI/CD流程自动生成文档。 #### 3. **结构化文档导航与搜索** 高效的API文档需提供清晰的目录结构、分类标签和搜索功能。例如,按功能模块划分接口,支持关键词搜索参数或接口名称,帮助开发者快速定位目标内容[^2]。 **优化案例**: 使用REST API Documentation Templates的分类标签功能。 #### 4. **代码生成与自动化工具** 部分文档工具支持根据API定义自动生成客户端代码(如SDK)、请求示例或Mock服务器。例如,OpenAPI Generator可生成多种语言的调用代码,减少重复编写基础代码的时间[^1][^2]。 **典型场景**: 生成Python请求代码或TypeScript类型定义。 #### 5. **示例驱动开发** 文档中提供丰富的场景化示例(如身份验证流程、分页查询实现),帮助开发者快速理解接口使用逻辑。示例应覆盖常见错误和边界条件,例如参数缺失时的错误响应[^3]。 **建议格式**: ```python # 示例:使用Python调用用户查询接口 import requests response = requests.get("/api/users", params={"page": 1, "limit": 20}) print(response.json()) ``` #### 6. **文档维护与团队协作** 将文档编写纳入开发流程,例如在代码审查时同步检查文档更新。使用Git版本控制管理文档变更,结合自动化测试验证文档描述的接口行为是否与实际一致[^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值