Open Perl modules with vim

After reading about opening Perl module via name with vim, I realized it had a couple of (for me) limitations. First, I always operate from my top-level directory in a project, but that post doesn't prepend a lib/. Second, when I'm running a test suite, I see failure which might be from a module in the lib/ directory, but more often than not are in the t/lib/ directory. Since I keep all of my project directories identical, I can use one little bash function to handle this:

function vim {
  set -- "${@//:://}"
  if [ -f $module ]; then
    command vim $module
  elif [ -f $testclass ]; then
    command vim $testclass
    command vim "${@}"

So using it like this:

vim Veure::Foo::Bar::Baz

It will first look for lib/Veure/Foo/Bar/, and then look for t/lib/Veure/Foo/Bar/ before finally giving up and just executing vim with whatever arguments I pass into it.

Improvements welcome.


another feature stolen from Padre :)

go vimers, go!

I use my Vim::Tag module to generate tags for package names, subroutine names and so on, so I can do:

    :ta Foo::Bar
    :ta my_subroutine

You can open vim at a tag with 'vi -t', and it's easy to set up bash completion for those tags.

I've had this line in my aliases file for ages now:

vipm () { vi `perldoc -l $1 | sed 's/pod$/pm/' `}

About Ovid

user-pic Freelance Perl/Testing/Agile consultant and trainer. See for our services. If you have a problem with Perl, we will solve it for you. And don't forget to buy my book!