1
0
mirror of https://github.com/skywind3000/z.lua synced 2026-03-14 03:39:49 +00:00
skywind3000 a5830876f0 update doc
2018-11-23 18:55:39 +08:00
2018-03-21 20:04:38 +08:00
2018-03-21 20:04:38 +08:00
2018-11-23 18:55:39 +08:00
2018-11-23 16:41:20 +08:00
2018-11-23 16:58:07 +08:00

z.lua

z - jump around (lua implementation for running on both unix & windows).

An alternative to z.sh with windows and posix shells support and performance improving.

Features

  • 10x times faster than fasd and autojump
  • 3x times faster than z.sh
  • available for posix shells: bash, zsh, dash, sh, ash, busybox and etc.
  • supports Windows cmd (with clink) and cmder
  • self contained, no dependence on awk/gawk
  • compatible with lua 5.1, 5.2 and 5.3+

USE

z foo       # cd to most frecent dir matching foo
z foo bar   # cd to most frecent dir matching foo and bar
z -r foo    # cd to highest ranked dir matching foo
z -t foo    # cd to most recently accessed dir matching foo
z -l foo    # list matches instead of cd
z -c foo    # restrict matches to subdirs of $PWD
z -e foo    # echo the best match, don't cd

Install

  • bash:

    put something like this in your .bashrc:

    eval "$(lua /path/to/z.lua --init bash)"
    
  • zsh:

    put something like this in your .zshrc:

    eval "$(lua /path/to/z.lua --init zsh)"
    
  • posix shells:

    put something like this in your .profile:

    eval "$(lua /path/to/z.lua --init posix)"
    

    (sh, ash, dash and busybox have been tested)

  • Windows (with clink):

    • copy z.lua and z.cmd to clink's home directory
    • Add clink's home to %PATH% (z.cmd can be called anywhere)
    • Ensure that "lua" can be called in %PATH%
  • Windows cmder:

    • copy z.lua and z.cmd to cmder/vendor
    • Add cmder/vendor to %PATH%
    • Ensure that "lua" can be called in %PATH%

Customize

  • set $_ZL_CMD in .bashrc/.zshrc to change the command (default z).
  • set $_ZL_DATA in .bashrc/.zshrc to change the datafile (default ~/.zlua).
  • set $_ZL_NO_PROMPT_COMMAND if you're handling PROMPT_COMMAND yourself.
  • set $_ZL_EXCLUDE_DIRS to an array of directories to exclude.

Benchmark

The slowest part of all autojump tools is adding current path to history data file, which will run each time you press enter(installed in $PROMPT_COMMAND). So I profile them on my NAS:

$ time autojump --add /tmp
real    0m0.352s
user    0m0.077s
sys     0m0.185s

$ time fasd -A /tmp
real    0m0.618s
user    0m0.076s
sys     0m0.242s

$ time _z --add /tmp
real    0m0.194s
user    0m0.046s
sys     0m0.154s

$ time _zlua --add /tmp
real    0m0.052s
user    0m0.015s
sys     0m0.030s

As you see, z.lua is the fastest one and requires less resource.

Credit

Releated projects:

License

Licensed under MIT license.

Description
A smarter cd command
Readme MIT 1.3 MiB
Languages
Lua 90.9%
Python 4.1%
Shell 2.8%
Batchfile 2.2%