Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

fz

A shell plugin that seamlessly adds fuzzy search to tab completion of z, lets you easy to jump around among your historical directories. Not any additional key binding is needed. Currently supports Bash and zsh.

Demo

gif-demo

Installation

By simply sourcing corresponding script file for your shell, you're all set. However, this plugin is sitting on top of z and fzf, so you must have them installed as well.

N.B. fz needs to be sourced after z.

macOS

Bash

  1. Install fzf via Homebrew.

    brew install fzf
  2. Download z and fz.

    mkdir ~/.bash_completion.d
    curl "https://raw.githubusercontent.com/rupa/z/master/{z.sh}" \
        -o ~/.bash_completion.d/"#1"
    curl "https://raw.githubusercontent.com/changyuheng/fz/master/{fz.sh}" \
        -o ~/.bash_completion.d/z"#1"
  3. Add the following content to ~/.bashrc:

    if [ -d ~/.bash_completion.d ]; then
      for file in ~/.bash_completion.d/*; do
        . $file
      done
    fi

zsh

  1. Install fzf via Homebrew.

    brew install fzf
  2. Install z and fz via zplug. Add the following content to ~/.zshrc:

    zplug "changyuheng/fz", defer:1
    zplug "rupa/z", use:z.sh

Ubuntu

Bash

  1. Install fzf.

    git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
    ~/.fzf/install
  2. Download z and fz.

    mkdir ~/.bash_completion.d
    curl "https://raw.githubusercontent.com/rupa/z/master/{z.sh}" \
        -o ~/.bash_completion.d/"#1"
    curl "https://raw.githubusercontent.com/changyuheng/fz/master/{fz.sh}" \
        -o ~/.bash_completion.d/z"#1"
  3. Add the following content to ~/.bashrc:

    if [ -d ~/.bash_completion.d ]; then
      for file in ~/.bash_completion.d/*; do
        . $file
      done
    fi

zsh

  1. Install fzf.

    git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
    ~/.fzf/install
  2. Install z and fz via zplug. Add the following content to ~/.zshrc:

    zplug "changyuheng/fz", defer:1
    zplug "rupa/z", use:z.sh

Usage

z [dir name slug]<TAB>
zz [dir name slug]<TAB>
  • The function of fz is pretty much like what it is of z. zz limits the search base starting from current working directory. Check z’s doc for more information.
  • tab/shift-tab, ctrl-n/ctrl-p, ctrl-j/ctrl-k, for next and previous item. Enter for selection. Check fzf’s doc for the search syntaxes.
  • FZ_CMD=z specifies command name of fz. Default is z.
  • FZ_SUBDIR_CMD=zz specifies command name for subdirectory only z. Default is zz.
  • FZ_SUBDIR_TRAVERSAL=0 disables subdirectory completion. Default is enabled.
  • FZ_CASE_INSENSITIVE=0 disables case-insensitive subdirectory completion. Default is enabled.
  • FZ_ABBREVIATE_HOME=0 disables abbreviating ~. Default is enabled.

See Also

License

This software is licensed under a MIT License.