Skip to content
perl omnicompletion for vim (including base class function compleltions .. etc)
VimL Makefile Perl Perl6 Python Batchfile
Find file
Latest commit 9a87ff7 Jan 30, 2016 @c9s Merge pull request #23 from cazador481/deoplete_better
This adds the sources needed for deoplete completion
Failed to load latest commit information.
autoload/perlomni add autoload scripts. Jun 5, 2012
bin Fix objvar parsing Mar 30, 2010
ftplugin/perl Fix path split. Dec 19, 2013
rplugin/python3/deoplete/sources deoplete completion enabled Jan 29, 2016
test-case Fix Cache Oct 26, 2010
utils fix script Nov 16, 2009
Makefile update makefile Sep 22, 2010
README.mkd.old New README file Mar 28, 2010
TODO update todo Sep 10, 2010 fix Makefile. related issue #18 Dec 7, 2012
win32-install.bat win32 installer. Apr 1, 2010




perl-completion plugin supports basic perl completion and Moose / DBIx::Class completion.

the rules could be easily extended. see ( ftplugin/perl/perlomni.vim )

core rules including:

  • variable name completion
  • function name completion
  • package method name completion
  • base class method name completion
  • basic Moose completion
  • basic DBIx completion

Supports deoplete completion


perlomni completion requires vim 7.2 or newer.

and filetype feature should be enabled.


just run make:

$ make install

and add ~/.vim/bin/ to your $PATH env variable , for example, add these lines to your .bashrc or .zshrc:

export PATH=~/.vim/bin:$PATH

please make sure you've enable filetype plugin your .vimrc:

filetype on
filetype plugin on
filetype indent on

NOTE) If you install pathogen.vim , you can make this working without installing.

If you are you want completion as you type and are using neovim you can install https:://


In insert mode , press C-x C-o to emit omni completion.

P.S. The completion works in terminal vim is faster than gvim/MacVim.

Write your perl omni completion extensions

Perl omni completion plugin is extensible, you can extend completion rules by simple regular expressions.

your omni completion extension should put in ~/.vim/after/ftplugin/perl/what-ever.vim.

API Functions

AddPerlOmniRule(rule), for example:

cal AddPerlOmniRule({ 'only':1, 'head': '^has\s\+\w\+' , 
    \'context': '\s\+is\s*=>\s*$'  , 
    \'backward': '[''"]\?\w*$' , 
    \'comp': function('s:CompMooseIs') } )

cal AddPerlOmniRule({
    \'context': '&$', 
    \'backward': '\<\U\w\+$', 
    \'comp': function('s:CompBufferFunction') })

Available Rule attributes

only: if one rule is matched, then rest rules won't be check.

contains: if file contains some string (can be regexp)

context: completion context pattern

backward: regexp for moving cursor back to the completion position.

head: pattern that matches paragraph head.

comp: completion function reference.

Cache Functions


ns: cache namespace
key:  cache key


ns: cache namespace
key:  cache key
value:  cache value


Please feel free to ask commit bit of this. just drop me a line. :-)





extends 'Moose::Meta::Attribute';
extends 'AAC::Pvoice';

" module compeltion
my $obj = new B::C;

" complete class methods

" complete built-in function
seekdir see

" $self completion
"   my $self
" to 
"   my $self = shift;
my $self

" complete current object methods
sub testtest { }
sub foo1 { }
sub foo2 { }


" smart object method completion
my $var = new Jifty;

" smart object method completion 2
my $var = Jifty::DBI->new;

my %hash = ( );
my @array = ( );

" complete variable
$var1 $var2 $var3 $var_test $var__adfasdf
$var__adfasd  $var1 

" moose complete

has url => (
    metaclass => 'Labeled',
    is        => 'rw',
    isa       => 'Str',
    label     => "The site's URL",

" role

with 'Restartable' => {
    -alias => {
        stop  => '_stop',
        start => '_start'
    -excludes => [ 'stop', 'start' ],

" }}}
Something went wrong with that request. Please try again.