A fuzzy search tool for the command-line

c, cli, fuzzy-search, pick, vim
brew install pick



pick(1) usage

The pick(1) utility allows users to choose one option from a set of choices using an interface with fuzzy search functionality.



Available in 6c37/crux-ports.

Debian and Ubuntu

A package for Pick is available As of Debian 9 and Ubuntu 16.04 LTS.

apt-get install pick


Package is available from the official repo.

emerge pick

Void Linux

Package is available from the official repo.

xbps-install pick

Mac OS X via Homebrew

brew install pick

Mac OS X via MacPorts

sudo port install pick

FreeBSD via Ports

cd /usr/ports/sysutils/pick
make install clean

FreeBSD via pkgng

pkg install pick


pkg_add pick

From source

Download the latest release and follow the bundled instructions in INSTALL.md.

If you want to try the latest unreleased version, follow the instructions in CONTRIBUTING.md.


pick(1) reads a list of choices on stdin and outputs the selected choice on stdout. Therefore it is easily used both in pipelines and subshells:

git ls-files | pick | xargs less # Select a file in the current git repository to view in less
cd "$(find . -type d | pick)"    # Select a directory to cd into
eval $(fc -ln 1 | pick)          # Select a command from the history to execute

Pick can also easily be used from within Vim both using system() and !. For ready-to-map functions, see the pick.vim Vim plugin. For examples of how to call pick(1) from within Vim, see the pick.vim source code.

Please note: pick requires a fully functional terminal to run and therefore cannot be run from within gvim or MacVim.

See the pick(1) man page for detailed usage instructions and more examples.


Copyright (c) 2017 Calle Erlandsson, Anton Lindqvist & thoughtbot.