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

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

  •  
  •   skywind3000 ·
    skywind3000 · 2019-02-11 12:53:31 +08:00 · 2345 次点击
    这是一个创建于 1872 天前的主题,其中的信息可能已经有所发展或是发生改变。

    更多 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 条附言  ·  2019-02-11 13:53:28 +08:00

    回到最近目录

    以往我们经常使用 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
    azh7138m
        1
    azh7138m  
       2019-02-11 14:04:41 +08:00 via Android
    这个我想扩展要怎么做呢?
    之前看介绍说,可以快速回到一个有 .git 的父目录,我想加一个回到有 package.json 的父目录。
    skywind3000
        2
    skywind3000  
    OP
       2019-02-11 14:07:24 +08:00   ❤️ 1
    @azh7138m 你可以设置环境变量,逗号分隔即可:

    export _ZL_ROOT_MARKERS=".git,.svn,.hg,.root,package.json"
    skywind3000
        3
    skywind3000  
    OP
       2019-02-11 14:17:59 +08:00
    @azh7138m 我已经更新文档,加入了这部分说明。
    azh7138m
        4
    azh7138m  
       2019-02-11 14:20:53 +08:00 via Android
    @skywind3000 我寻思着,这个时间点,是不是就算摸鱼了🤣
    skywind3000
        5
    skywind3000  
    OP
       2019-02-11 14:22:23 +08:00
    利用吃饭时间更新的,哈哈。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2852 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 00:27 · PVG 08:27 · LAX 17:27 · JFK 20:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.