z.lua 1.6.0 发布,会学习你习惯的 cd 命令

来源: 投稿
作者: 韦易笑
2019-03-04

z.lua 是一个命令行下快速切换路径的工具。

首先,该工具会学习你最常去路径,然后用一套基于 frecency (兼顾访问频率和最近访问时间)的算法来筛选历史路径。让你可以简单的输入几个字符就把你带到特定的目录下去。别指望 z.lua 马上就能工作,他需要一小段时间的学习和跟踪。

市面上也有一些 z.lua 类似的工具,z.lua 比他们都快很多,开发者称 z.lua 比 fasd / autojump 快十倍,同时比 z.sh 快 3 倍。除此以外,z.lua 实现了两套匹配算法,默认匹配算法和 z.sh 一致,而增强型匹配算法比 z.sh 和 autojump 更高效,具体在项目主页有说明。

z.lua 特性:

  • 比 fasd / autojump 快十倍,比 z.sh 快 3 倍.
  • 支持: bash, zsh, dash, sh, ash, ksh, busybox, Fish Shell, Power Shell 和 Windows cmd.
  • 两种目录匹配算法和两种目录记录方法。
  • 交互选择 模式允许你在 cd 前选择自己想要的地方(当有多个匹配时 z -i 会显示一个列表让你选择)。
  • 集成 fzf (可选) 用可视化的模式进行交互式选择和补全.
  • 快速回到父目录,避免重复 cd ../../..
  • 为不同的操作系统和 Shell 提供统一的体验.
  • 兼容 Lua 5.1, 5.2 和 5.3+

同时,z.lua 也有一系列配置,让你可以定制命令名称,跟踪目录黑名单,以及如何从 autojump / z.sh 导入数据。

 

z.lua 使用案例


案例 1:

假设你有一条 /a/b/c/foo/bar 的路径,你想在命令行下快速切换过去,使用 z.lua,你想去 bar 目录的话只需要简单输入:

z foo bar

所有关键字都是按顺序匹配,上面的例子可以匹配到 foo/bar ,但无法匹配 bar/foo !

案例 2:

我们来看一个我电脑里的实际案例,我系统里有一条路径:

/home/logix/Stuff/Unity3d/unity2d_platformer/Assets/Art

这条路径很长,终端下想要切换过去的话需要费一些时间(即便你有 Tab 补全)。但只要我去过一次该路径(z.lua 就会跟踪到),我就可以使用 z.lua 直接一步进入 Art 目录:

z art

这条命令非常短,因为我没有去过其他同样名为 Art 的路径。如果我有很多个同样名为 Art 的目录,我可以多加一些关键字去到特定目录:

z assets art

你在 z.lua 项目文档中可以看到更多例子,比如如何 cd 到最高 rank 的目录,如果去到刚刚访问过的目录,如果列出备选项(而不是切换路径)等等。
 

安装 z.lua


要使用 z.lua 的话,你需要先安装 Lua:

  • Debian, Ubuntu, Linux Mint, elementary OS, 或者其他基于 Debian 或 Ubuntu-based 的 Linux 发行版:
sudo apt install lua5.2
  • Fedora:
sudo dnf install lua

其他 Linux 系统的话,你应该可以在系统包管理软件中安装 lua,或者直接下载 Lua 源代码按照文档编译。

现在你可以下载最新的 z.lua 版本,解压,并按照说明按照对你对应的 shell (bash, zsh, fish, power shell, windows cmd, ...)上。

以 Bash 为例的话,可以把 z.lua 解压为 ~/.local/opt/z.lua 目录,然后将下面语句添加到你的 ~/.bashrc 文件中:

  • 使用默认匹配算法:
eval "$(lua ~/.local/opt/z.lua/z.lua --init bash)"
  • 使用增强匹配算法:
eval "$(lua ~/.local/opt/z.lua/z.lua --init bash enhanced once)"

保存更改到 ~/.bashrc,重新打开一个新的终端以后,你就可以使用 z.lua 了,记得简单的 cd 跳转一下,z.lua 需要学习你去过的地方。

展开阅读全文
1 收藏
分享
加载中
更多评论
0 评论
1 收藏
分享
返回顶部
顶部