Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


pathogen.vim: manage your runtimepath

Subscribe to updates I use vim-pathogen

Statistics on vim-pathogen

Number of watchers on Github 9949
Number of open issues 21
Average time to close an issue 27 days
Main language VimL
Average time to merge a PR about 12 hours
Open pull requests 9+
Closed pull requests 33+
Last commit almost 3 years ago
Repo Created over 10 years ago
Repo Last Updated over 2 years ago
Size 94 KB
Homepage http://www.vim.or...
Organization / Authortpope
Page Updated
Do you use vim-pathogen? Leave a review!
View open issues (21)
View vim-pathogen activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating vim-pathogen for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Manage your 'runtimepath' with ease. In practical terms, pathogen.vim makes it super easy to install plugins and runtime files in their own private directories.


Install to ~/.vim/autoload/pathogen.vim. Or copy and paste the following into your terminal/shell:

mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

If you're using Windows, change all occurrences of ~/.vim to ~\vimfiles.

Runtime Path Manipulation

Add this to your vimrc:

execute pathogen#infect()

If you're brand new to Vim and lacking a vimrc, vim ~/.vimrc and paste in the following super-minimal example:

execute pathogen#infect()
syntax on
filetype plugin indent on

Now any plugins you wish to install can be extracted to a subdirectory under ~/.vim/bundle, and they will be added to the 'runtimepath'. Observe:

cd ~/.vim/bundle && \
git clone https://github.com/tpope/vim-sensible.git

Now sensible.vim is installed. If you really want to get crazy, you could set it up as a submodule in whatever repository you keep your dot files in. I don't like to get crazy.

If you don't like the directory name bundle, you can pass a runtime relative glob as an argument:

execute pathogen#infect('stuff/{}')

The {} indicates where the expansion should occur.

You can also pass an absolute path instead. I keep the plugins I maintain under ~/src, and this is how I add them:

execute pathogen#infect('bundle/{}', '~/src/vim/bundle/{}')

Normally to generate documentation, Vim expects you to run :helptags on each directory with documentation (e.g., :helptags ~/.vim/doc). Provided with pathogen.vim is a :Helptags command that does this on every directory in your 'runtimepath'. If you really want to get crazy, you could even invoke Helptags in your vimrc. I don't like to get crazy.

Finally, pathogen.vim has a rich API that can manipulate 'runtimepath' and other comma-delimited path options in ways most people will never need to do. If you're one of those edge cases, look at the source. It's well documented.

Native Vim Package Management

Vim 8 includes support for package management in a manner similar to pathogen.vim. If you'd like to transition to this native support, pathogen.vim can help. Calling pathogen#infect() on an older version of Vim will supplement the bundle/{} default with pack/{}/start/{}, effectively backporting a subset of the new native functionality.

Runtime File Editing

:Vopen, :Vedit, :Vsplit, :Vvsplit, :Vtabedit, :Vpedit, and :Vread have all moved to scriptease.vim.


Can I put pathogen.vim in a submodule like all my other plugins?

Sure, stick it under ~/.vim/bundle, and prepend the following to your vimrc:

runtime bundle/vim-pathogen/autoload/pathogen.vim

Or if your bundles are somewhere other than ~/.vim (say, ~/src/vim):

source ~/src/vim/bundle/vim-pathogen/autoload/pathogen.vim

Will you accept these 14 pull requests adding a .gitignore for tags so I don't see untracked changes in my dot files repository?

No, but I'll teach you how to ignore tags globally:

git config --global core.excludesfile '~/.cvsignore'
echo tags >> ~/.cvsignore

While any filename will work, I've chosen to follow the ancient tradition of .cvsignore because utilities like rsync use it, too. Clever, huh?

What about Vimballs?

If you really must use one:

:e name.vba
:!mkdir ~/.vim/bundle/name
:UseVimball ~/.vim/bundle/name

Why don't my plugins load when I use Vim sessions?

Vim sessions default to capturing all global options, which includes the 'runtimepath' that pathogen.vim manipulates. This can cause other problems too, so I recommend turning that behavior off:

set sessionoptions-=options


If your commit message sucks, I'm not going to accept your pull request. I've explained very politely dozens of times that my general guidelines are absolute rules on my own repositories, so I may lack the energy to explain it to you yet another time. And please, if I ask you to change something, git commit --amend.

Beyond that, don't be shy about asking before patching. What takes you hours might take me minutes simply because I have both domain knowledge and a perverse knowledge of Vim script so vast that many would consider it a symptom of mental illness. On the flip side, some ideas I'll reject no matter how good the implementation is. Send a patch is an edge case answer in my book.


Like pathogen.vim? Follow the repository on GitHub and vote for it on vim.org. And if you're feeling especially charitable, follow tpope on Twitter and GitHub.


Copyright (c) Tim Pope. Distributed under the same terms as Vim itself. See :help license.

vim-pathogen open issues Ask a question     (View All Issues)
  • over 3 years stopped working
  • over 3 years Adding individual plugin to runtimepath
  • almost 4 years :V* commands blocking tab complete
  • over 4 years vim startup statistics
  • over 5 years Pathogen causing vim to crash
  • almost 6 years Using pathogen in Windows from a SMB Share
  • about 6 years _call_ vs _execute_ _pathogen#infect()
  • about 6 years whitelist plugins
  • over 6 years Common configuration issue with Pathogen
  • over 6 years Pathogen not loading plugins on Arch Linux
  • over 6 years Pathogen doesn't work with UNC paths on Windows
  • over 7 years Is there a way of adding a specific addon after vim is already started?
  • over 8 years provide standard reload mapping
  • over 8 years Incompatible with OmniCppComplete
  • over 8 years Subdirectories of bundles are not parsed for addition to rtp
  • about 9 years ShowMarks when managed by Pathogen sets vim running at ~90% CPU when a :help 'topic' command is issued
vim-pathogen open pull requests (View All Pulls)
  • Minor change in README.md
  • document how to blacklist plugins
  • Issue #140 - Fix for using pathogen or bundle from a Windows SMB file
  • Remove commands that were moved to scriptease
  • Check for translated help files in doc directory
  • Better relative paths handling and returning more useful values from API
  • Fix hardcoded shellslashes for helptags()
  • Edit README: add/revise MD formatting, code blocks; clarify FAQ instruction; other tiny changes.
  • Optimize uniq().
vim-pathogen questions on Stackoverflow (View All Questions)
  • vim, pathogen, and load order of ftplugin files
  • I used a bash command in home and vim-pathogen stopped working
  • Vim Pathogen won't load - E117: Unknown function: pathogen#infect
  • Vim + Pathogen not loading help docs
  • How to make vim pathogen to reload plugins?
  • Problems with vim-pathogen on mac osx
  • Errors when opening VIM (pathogen,rope,python)
  • Vim pathogen and helptags autogeneration: errors
  • Error with vim pathogen inside cygwin
  • How does vim-pathogen make anything easier?
  • Vim: Pathogen not loading
  • Git Update Changes not from Sub Module - ~/.vim - Pathogen
vim-pathogen list of languages used
  • Vim script
Other projects in VimL