终端下的路径切换工具

【终端下的路径切换工具】在终端下路径切换的工具除了cd外,还有以下更高级的工具可以使用。

工具名称 创建年份 主要作者
autojump 2008 Joel Schaerer & William Ting
z.sh 2009 Rupa
fasd 2011 Wei Dai
z.lua 2018 Lin Wei
核心思想:
  1. 数据文件记录用户进入过的目录,频率。
  2. 使用这些工具的前提是数据文件中存在相关记录。
  3. 每次进入一个目录工具会更新数据文件
z.lua 号称是最快的,能在极端环境下使用。
下面数据来自z.lua官方。
$ time autojump --add /tmp real0m0.352s user0m0.077s sys0m0.185s$ time fasd -A /tmp real0m0.618s user0m0.076s sys0m0.242s$ time _z --add /tmp real0m0.194s user0m0.046s sys0m0.154s$ time _zlua --add /tmp real0m0.052s user0m0.015s sys0m0.030s

使用
z foo # 跳转到包含 foo 并且权重(Frecent)最高的路径
z foo bar # 跳转到同时包含 foo 和 bar 并且权重最高的路径
z -r foo # 跳转到包含 foo 并且访问次数最高的路径
z -t foo # 跳转到包含 foo 并且最近访问过的路径
z -l foo # 不跳转,只是列出所有匹配 foo 的路径
z -c foo # 跳转到包含 foo 并且是当前路径的子路径的权重最高的路径
z -e foo # 不跳转,只是打印出匹配 foo 并且权重最高的路径
z -i foo # 进入交互式选择模式,让你自己挑选去哪里(多个结果的话)
z -I foo # 进入交互式选择模式,但是使用 fzf 来选择
z -b foo # 跳转到父目录中名称以 foo 开头的那一级
在工作中,我常用用z -iz -b。以前用autojump,习惯用j,并且字母j就在右手食指默认位置,方便。故添加下面的别名。
alias j='z -i'
alias jb='z -i'
  • j 我喜欢列出来自己选择,相对直观。
  • jb 类似Android 编译环境中的croot。
    (没有参数):cd 到项目根目录,即跳转到最近的包含 (.git/.svn/.hg) 的父目录。
    (单个参数):cd 到离当前目录最近的以关键字开头的父目录,如果找不到就尝试跳到包含关键字的父目录。
    (两个参数):将当前路径中的第一个关键词替换为第二个关键词。

    推荐阅读