首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
V2EX  ›  Linux

z.lua 第四弹:补全系统完善, fzf-补全,更多 shell 支持

  •  
  •   skywind3000 · 5 天前 · 596 次点击

    更多 shell 支持

    • 支持 Power Shell
    • 优化了对一些老的 posix shell 的支持,如 ksh

    补全功能

    zsh/fish 的补全系统是比较完善的,使用 z foo<tab> 就能触发补全,显示一个列表:

    再次按 <tab> 键,就可以用可视化的方式对列表进行选择。

    在 bash 下面补全系统没有那么强大,所以 z.lua 引入了 fzf 补全,初始化时在 --init 后追加 fzf 关键字:

    eval "$(lua /path/to/z.lua --init bash enhanced once echo fzf)"
    

    然后你在 bash 中,输入部分关键字后按 tab,就能把匹配的路径列出来:

    有了 fzf 的帮助,bash 下补全也非常方便了。

    注意:该功能在初始化 z.lua 之前,会检测 $PATH 中是否有 fzf 这个程序,有的话才启用。

    第 1 条附言  ·  5 天前

    回到最近目录

    以往我们经常使用 cd - 命令来回到刚才访问过的目录,而有了 fzf 的帮助,我们可以更高效的来完成这件事情:

    alias zh=`z -t -I .`
    

    首先定义个新的别名 zh(回到历史路径的意思),我们使用了 -t 参数来告诉 z.lua 按照时间戳作为权重进行排序,同时 -I 启用 fzf 进行搜索,最后的句号代表任意路径。

    那么当我们在命令行敲入 zh 时,就可以用 fzf 选择最近呆过的路径了:

    第一列数据代表该路径多少秒以前访问过,第二列是路径名称。此时,你可以试着敲几个字母,用 fzf 的字符串模糊匹配进行定位,或者用光标键的上和下(CTRL+J/K 也可以)来上下移动,最后按回车 cd 过去,或者 ESC 放弃。

    这样跳转最近访问目录,比传统方法爽很多。

    5 回复  |  直到 2019-02-11 14:22:23 +08:00
        1
    azh7138m   5 天前 via Android
    这个我想扩展要怎么做呢?
    之前看介绍说,可以快速回到一个有 .git 的父目录,我想加一个回到有 package.json 的父目录。
        2
    skywind3000   5 天前   ♥ 1
    @azh7138m 你可以设置环境变量,逗号分隔即可:

    export _ZL_ROOT_MARKERS=".git,.svn,.hg,.root,package.json"
        3
    skywind3000   5 天前
    @azh7138m 我已经更新文档,加入了这部分说明。
        4
    azh7138m   5 天前 via Android
    @skywind3000 我寻思着,这个时间点,是不是就算摸鱼了🤣
        5
    skywind3000   5 天前
    利用吃饭时间更新的,哈哈。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   738 人在线   最高记录 4346   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 16ms · UTC 21:59 · PVG 05:59 · LAX 13:59 · JFK 16:59
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1