在终端工作最烦人的就是路径切换。没有自动路径切换的帮助,就像在泥泞中行走,于是大家发明了各种autojump/z/fasd等工具来提高路径切换的效率,今天介绍一个比较好用的工具:z.lua,用过之后熟练,就像在终端滑冰,路径切换会指向从现在开始打到哪里。z.lua是一个cd命令,会学习你的使用习惯。它会通过一种叫做Frecent(来自Mozilla)的机制跟踪你在shell下访问过的路径。经过短暂的学习,z.lua会帮你跳转到所有匹配正则关键字的路径中,Frecent值最高的路径。regex会按顺序匹配,"zfoobar"可以匹配/foo/bar,但不能匹配/bar/foo。特性描述:性能比z.sh快三倍,比fasd/autojump快十倍以上。支持Posixshell:bash、zsh、dash、sh、ash、busybox等。支持FishShell、PowerShell和Windowscmd。使用增强的匹配算法,更准确地将您带到您想去的地方。占用空间小,仅当当前路径更改时才能够更新数据库(将$_ZL_ADD_ONCE设置为1)。交互式选择模式,如果有多个匹配结果,让你先选择再跳转。交互式选择模式,支持使用fzf(可选)进行可视化结果过滤。快速跳转到上级目录,或者项目根目录,而不是反复“cd../../..”。为不同的操作系统、不同的shell程序提供统一的用户体验。兼容lua5.1、5.2和5.3+版本。自包含且没有额外的依赖项,一个z.lua文件可以完成所有工作。软件安装:在你的.bashrc/.zshrc/.profile或相应shell的初始化脚本末尾添加如下相应语句:eval"$(lua/path/to/z.lua--initbashenhancedonceecho)"#BASH初始化eval"$(lua/path/to/z.lua--initzshenhancedonceecho)"#ZSH初始化eval"$(lua/path/to/z.lua--initposixenhancedonceecho)"#其他PosixShell初始化源(lua/path/to/z.lua--initfishenhancedonceecho|psub)#FishShell初始化iex($(lua/path/to/z.lua--initpowershellenhancedonceecho)-join"`n")#初始化PowerShell,再次登录即可使用。用户评论:“我喜欢它的工作方式,我在命令行上的行为非常规律,而且我懒得管理和维护一组书签或路径别名。”“总的来说,z.lua做到了它声称的目标。如果你需要在目录之间快速切换,它可能是最好的选择。”“我终于可以在我的树莓派1上使用类似自动跳转的功能,而不是每次都打开它像传统的自动跳转一样,两个终端都等待30秒。”基本用法:cd到包含foo的目录:zfoocd到以foo结尾的目录:zfoo$使用多个关键字进行长路径匹配:假设路径历史数据库(~/.zlua)有两条记录:10/home/user/work/inbox30/home/user/mail/inbox"zin"会跳转到/home/user/mail/inbox因为它有更高的值同时可以给z.lua传更多参数指定更多准确地说,比如“zwin”会让你跳转到/home/user/work/inbox。交互式选择:使用-i参数跳转时,如果有多个匹配结果,那么z.lua会给你一个列表:$z-isoft3:0.25/home/data/software2:3.75/home/skywind/tmp/comma/software1: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$zbg=>cd~/github#快速回到站点目录~/github/demo/src/org/main/site/utils/file/reader/whatever$zbsi=>cd~/github/demo/src/org/main/site#用ghost替换jekyll~/github/jekyll/test$zbjekyllghost=>cd~/github/ghost/test向后跳转也支持环境变量$_ZL_ECHO(用于显示跳转结果),这提供了匹配其他工具的可能(不改变当前工作目录),例如ls$(zb):Bonus:"zb..”等同于“cd..”,“zb...”等同于“cd../..”,“zb....”等同于“cd../../.。“等等。最后“zb..20”相当于调用“cd..”二十次。常用技巧:推荐一些常用的别名,放在你的配置文件中:aliaszz='z-c'#严格匹配当前路径的子路径aliaszi='z-i'#使用交互选择方式aliaszf='z-I'#使用fzf选择多个结果aliaszb='z-b'#快速回到父目录z.lua方便导入z.sh数据(它们格式相同):cat~/.z>>~/.zlua也可以导入自动跳转数据:FN="$HOME/.local/share/autojump/autojump.txt"awk-F'\t''{print$2"|"$1“|”0}'$FN>>~/.zlua更多内容参考项目文档。
