Skip to content
⚡️ Dark powered Vim/Neovim plugin manager
Vim script Python Shell
Branch: master
Clone or download
Latest commit c371175 Jan 8, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update ISSUE_TEMPLATE Jan 12, 2018
autoload PowerShell and-chain workaround for git update Dec 6, 2019
bin Fix Oct 1, 2018
doc Fix help lint errors Jan 8, 2020
rplugin/python3/denite/source Fix denite source name May 13, 2019
test fixed failing test Oct 2, 2019
.gitignore Update .gitignore May 2, 2018
.travis.yml Use Xenial May 30, 2019
LICENSE Add copyright in LICENSE Mar 6, 2016 Fix README examples Oct 28, 2018


Join the chat at Build Status

Dein.vim is a dark powered Vim/Neovim plugin manager.


  • Vim 8.0 or above or NeoVim.
  • "xcopy" command in $PATH (Windows)
  • "git" command in $PATH (if you want to install github or plugins)

Note: If you use Vim 7.4, please use dein.vim ver.1.5 instead.

If you need vim-plug like install UI, you can use dein-ui.vim.

Quick start

Note: You must define the installation directory before to use dein. The directory that you will want to use depends on your usage.

For example, ~/.vim/bundles or ~/.cache/dein or ~/.local/share/dein. dein.vim does not define a default installation directory. You must not set the installation directory as ~/.vim/plugin or ~/.config/nvim/plugin.

Unix/Linux or Mac OS X

  1. Run below script.
curl >
# For example, we just use `~/.cache/dein` as installation directory
sh ./ ~/.cache/dein
  1. Edit your .vimrc like this.
if &compatible
  set nocompatible
" Add the dein installation directory into runtimepath
set runtimepath+=~/.cache/dein/repos/

if dein#load_state('~/.cache/dein')
  call dein#begin('~/.cache/dein')

  call dein#add('~/.cache/dein/repos/')
  call dein#add('Shougo/deoplete.nvim')
  if !has('nvim')
    call dein#add('roxma/nvim-yarp')
    call dein#add('roxma/vim-hug-neovim-rpc')

  call dein#end()
  call dein#save_state()

filetype plugin indent on
syntax enable
  1. Open vim and install dein
:call dein#install()


  • Faster than NeoBundle

  • Simple

  • No commands, Functions only to simplify the implementation

  • Easy to test and maintain

  • No Vundle/NeoBundle compatibility

  • neovim/Vim8 asynchronous API installation support

  • Local plugin support

  • Non github plugins support

  • Go like clone directory name ex:"{user}/{repository}"

  • Merge the plugins directories automatically to avoid long 'runtimepath'

Future works (TODO)

  • Other types support (zip, svn, hg, ...)

  • Metadata repository support


Some common options. For a more detailed list, run :h dein-options

Option Type Description
name string The name for a plugin. If it is omitted, the tail of the repository name will be used
rev string The revision number or branch/tag name for the repo
build string Command to run after the plugin is installed
on_ft string or list Load a plugin for the current filetype
on_cmd string or list Load the plugin for these commands
rtp string You can use this option when the repository has the Vim plugin in a subdirectory
if string or number If it is String, dein will eval it.
merged number If set to 0, dein doesn't merge the plugin directory.
You can’t perform that action at this time.