Fuzzy finder for the terminal. quickfind
can search files in the file system, ctags files, or anything that can pipe.
To install from Pypi:
pip install quickfind
To install the faster version with ctags from Pypi:
pip install quickfind[ctags,fsnix]
To upgrade to the latest version:
pip install quickfind --upgrade
To install from source, clone the repo and type:
python setup.py install
in the directory.
'sudo' might be needed, depending on permissions.
quickfind has two builtin forms: File search and CTags search, with File search as default.
After installation, a new executable is added to the path 'qf'. To use:
qf # for file search
qf -c # To search tags in CTags file
and start typing! quickfind can be configured to match against file name and/or path while selecting either files, directories, or both. By default, it filters out files listed in a tree's .gitignore.
The Up/Down (or Alt-P/Alt-N) keys selects which file to open. Enter opens selects the highlighted file. In multiple select mode, toggles the inclusion of the selected file.
Sometimes a single query isn't enough to differentiate between the files. By pressing Tab, quickfind will add another 'searcher' query for additional filtering.
Multiple entries can be selected when the '-m' flag is provided. In multiselect mode, 'Enter' adds the highlighted file to the selection. After all selections have been made, ctrl+D exits quickfind with the selected entries.
quickfind can search on stdin:
find . -type f | qf
quickfind can further be extended to execute custom commands after an item as been selected:
# To kill a process
ps aux | qf -f "kill -9 {2}"
quickfind similarly can output to stdout with the '-o' flag rather than exec-ing the formatted command:
# To view man a file
man $(man -k . | qf -f "{1}" -o)
By default, quickfind will execute "$EDITOR {0}", where "{0}" represents the entire selected record. In "{N}", N represents the Nth piece split by the delimiter specified by -D. By default, the delimiter is whitespace.
A basic vim plugin has been developed to open files up with quickfind. To install,
copy plugin/qf.vim
to your vim plugin directory (usually ~/.vim/plugin/). To use,
simply type :QF
in normal mode to open up the quickfind daemon and choose the file
to open. :TS triggers quickfind with ctags.
Add to your .bashrc:
# To add ctrl+f as a qf hotkey.
bind '"\C-f": "qf\n"'
# To enable a new bash command, 'qcd', for quickly cd-ing to a directory.
function qcd() {
_OFILE=$(qf -d -o -f "{0}")
if [ -n "$_OFILE" ]; then
cd $_OFILE
fi
unset _OFILE
}
# To easily kill processes
alias qkill="ps aux | qf - -f 'kill -f {2}'"
# To easily git add a file
alias gadd="git status --short | qf -m -f 'git add {2}'"