Vim Tips Wiki
Advertisement
Tip 1545 Printable Monobook Previous Next

created 2008 · complexity basic · author Umu · version 7.0


Given a huge file listing as text file, you can use this script to comfortably browse it. Use all fold commands of Vim to open/close parts of the directory tree, as used from standard file managers ( but even more flexible, including moving in fold structure, executing commands on folds ... )

The more, on Unix-like systems you can pipe the output of tools like find, locate, tar -t, ... directly into Vim executing this script by using - as filename.

Examples:

vim -u browser.vim  arch-hurd-i386.files
find . | vim -u browser.vim -
locate nox | vim -u browser.vim -
tar -tzf boost.tar.gz | vim -u browser.vim -

browser.vim

set mouse=a
set foldminlines=1 foldcolumn=2 fillchars="+" foldlevel=0
set foldmethod=expr
set foldexpr=FileBrowserFoldExpr()
set foldtext=FileBrowserFoldText()

function FileBrowserFoldExpr()
  let line=getline(v:lnum)
  let n=strlen(substitute(line,'[^/]*','','g'))
  if (line=~'^.*/$')
    return '>'.n
  elseif (strpart(getline(v:lnum+1),0,strlen(line)+1)==line.'/')
    return '>'.(n+1)
  endif
  return n
endfunction

function FileBrowserFoldText()
  return getline(v:foldstart) . '    ... [' . (v:foldend-v:foldstart+1) . ' lines]'
endfunction

Comments[]

 TO DO 

  • Briefly explain purpose of tip and how to use (don't assume reader can quickly determine what idea is).
  • Include something like "On Unix systems..." near top as hint for new readers.
  • Mention how the - makes Vim input from stdin.

Advertisement