Vim script
Switch branches/tags
Nothing to show
Clone or download
Latest commit c273c46 Jun 20, 2018

dirvish.vim ⚡️

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
  • Preserves the alternate buffer @# (and original buffer)
  • Non-intrusive defaults
  • 2x faster than netrw
  • Visual selection opens multiple files
  • :Shdo generates a shell script on selected files
  • :Shdo! generates a shell script on the local arglist
  • Less code, fewer bugs (96% smaller than netrw)
  • Compatible with Vim 7.2+


Lines are 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.
  • For complex scripting, :Shdo! (with !) operates on the local arglist.
  • Add lines to quickfix (:'<,'>caddb) and iterate (:cdo).
  • :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.


Some people have created plugins that extend Dirvish.


Dirvish was originally forked from filebeagle (and completely rewritten). Thanks to @jeetsukumaran.