luneta 0.7.4

Luneta is an interactive filter that can be easily composed within any script.

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

luneta Build Status luneta

Luneta is an interactive command-line filter that can be applied to any list, e.g., cat $(ls | luneta)


In this example, a list of files and folders are passed to luneta, which opens an interactive screen that allows users to fuzzy search through it. After an item gets selected luneta writes it to the stdout.

In short, it provides a convenient way to filter the data before passing it downstream.

(list) stdin -> luneta (interactive filter) -> stdout (selected value)

Although luneta was originally created to be used as a command-line tool, it can be integrated in other applications, e.g., Vim.


  • Fast
  • Small (~1mb binary)
  • Support for multiple line selection

Run luneta -h for help:

usage: luneta [options]
-v --version version
-q   --query default query to be used upon startup
-f  --filter do not start interactive finder, e.g -f="pattern"
    --height set the maximum window height (number of lines), e.g --height 25
     --color color support, e.g --color=FALSE
-h    --help This help information.



brew install fbeline/luneta/luneta


snap install luneta

Precompiled binaries

Releases - note: libncurses is required.

Manual Installation


git clone
cd luneta
dub build -b release --compiler ldc2


Search a command in your shell history:

fc -ln 1 | luneta

Checkout a git branch:

git branch 2>/dev/null | luneta | sed "s/.* //" | awk '{print $1}' | xargs git checkout

Kill an active process:

ps -e -o comm | luneta | xargs pkill

Refer to the examples for more.

Use with Vim

Just paste the code bellow in your .vimrc to use luneta as your file seaching tool.

" Run a given vim command on the results of fuzzy selecting from a given shell
" command. See usage below.
function! LunetaCommand(choice_command, vim_command)
    let output = system(a:choice_command . " | luneta ")
  catch /Vim:Interrupt/
    " Swallow the ^C so that the redraw below happens; otherwise there will be
    " leftovers from luneta on the screen
  if v:shell_error == 0 && !empty(output)
    exec a:vim_command . ' ' . output

" Find all files in all non-dot directories starting in the working directory.
" Fuzzy select one of those and open the selected file.
nnoremap <leader>e :call LunetaCommand("find . -type f", ":e")<cr>
nnoremap <leader>v :call LunetaCommand("find . -type f", ":vs")<cr>
nnoremap <leader>s :call LunetaCommand("find . -type f", ":sp")<cr>

For better results is recommended to use tools like ag, rg, ack, etc.

nnoremap <leader>e :call LunetaCommand("ag . --silent -l", ":e")<cr>
nnoremap <leader>v :call LunetaCommand("ag . --silent -l", ":vs")<cr>
nnoremap <leader>s :call LunetaCommand("ag . --silent -l", ":sp")<cr>

*This vimscript is a modified version of the selecta.

Keyboard shorcuts

CTRL + SpaceSelect line and move to the next item
CTRL + nnext selection
CTRL + pprevious selection
CTRL + abeggining of the line
CTRL + eend of the line
CTRL + uerase all the character before and after the cursor
CTRL + dexit



  • Felipe Beline Baravieira
ncurses, fuzzyd
0.7.4 2020-May-26
0.7.3 2020-May-05
0.7.2 2020-May-04
0.7.1 2020-May-03
0.7.0 2020-May-03
Show all 21 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 42 downloads total

Short URL: