github github
stars 1,158
issues 17
subscribers 22
forks 62



2 months ago

dirvish.vim :zap:

Path navigator designed to work with Vim's built-in mechanisms and complementary plugins.


  • Simple: Each line is just a filepath
  • Flexible: Mash up the buffer with :g, automate it with g:dirvish_mode
  • Safe: Never modifies the filesystem
  • Non-intrusive: Impeccable defaults. Preserves original/alternate buffers
  • Fast: 2x faster than netrw
  • Intuitive: Visual selection opens multiple files
  • Powerful: :Shdo[!] generates shell script
  • Reliable: Less code, fewer bugs (96% smaller than netrw). Supports Vim 7.2+


Lines are filepaths

Each Dirvish buffer contains only filepaths, hidden by conceal.

  • Use plain old y to yank a path, then feed it to :r or :e or whatever.
  • Sort with :sort, filter with :global. Hit R to reload.
  • Append to quickfix (:'<,'>caddb), iterate with :cdo.
  • Script with :Shdo[!].
  • :set ft=dirvish on any buffer to enable Dirvish features:
    git ls-files | vim +'setf dirvish' -

Buffer name is the directory name

So commands and plugins that work with @% and @# do the Right Thing.

  • Create directories:
    :!mkdir %foo
  • Create files:
    :e %foo.txt
  • Use @# to get the Dirvish buffer from a :Shdo buffer:
    mkdir <C-R>#.bk

Edit Dirvish buffers

For any purpose. It's safe and reversible.

  • Use :sort or :global to re-arrange the view, delete lines with d, etc. Then :%Shdo the result.
  • Pipe to :! to see inline results:
    :'<,'>!xargs du -hs
  • Type u to undo, or R to reload.

Work with the :args list

The arglist is an ad-hoc list of filepaths.

  • Type x to add files to the (window-local) arglist.
  • Iterate with standard commands like :argdo, or plugin features like ]a.
  • Run :Shdo! (mapping: [count].) to generate a shell script from the arglist.


Some people have created plugins that extend Dirvish:


Dirvish was originally forked (and completely rewritten) from filebeagle by Jeet Sukumaran.

Copyright 2015 Justin M. Keyes.