fzf inspired fuzzy CLI list selection 🎀
npm install -g node-fzf
# by default (TTY mode) will glob list of current dir files
nfzf
# using pipes
find . | grep -v node_modules | nfzf
const nfzf = require( 'node-fzf' )
const list = [ 'whale', 'giraffe', 'monkey' ]
// opens interactive selection CLI
// note! this messes with stdout so if you are
// writing to stdout at the same time it will look a bit messy..
const api = nfzf( list, function ( value, index ) {
console.log( value ) // 'giraffe'
console.log( index ) // 1
console.log( value === list[ index ] ) // true
} )
// can also add more items later..
setInterval( function () {
list.push( 'foobar' )
api.update( list )
}, 1000 )
<ctrl-j>,down scroll down
<ctrl-k>,up scroll up
<ctrl-d> scroll down by 10
<ctrl-u> scroll up by 10
<esc>,<ctrl-q>,<ctrl-c> cancel
<return>,<ctrl-m> trigger callback with current selection and exit
<ctrl-w> clear current fuzzy search
<backspace> delete last fuzzy search character
fzf inspired fuzzy CLI list selection thing for node.
easy fuzzy list selection UI for NodeJS CLI programs.
Mostly cli-color for dealing with the terminal rendering and ttys to hack the ttys to simultaneously read from non TTY stdin and read key inputs from TTY stdin -> So that we can get piped input while also at the same time receive and handle raw keyboard input.
fzf even though it doesn't work in NodeJS directly is all-in-all a better tool than this piece of crap :) Highly recommend~
No tests..