Skip to content
Go to file


Failed to load latest commit information.


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.

  1. Run below script.

For Unix/Linux or Mac OS X

curl >
# For example, we just use `~/.cache/dein` as installation directory
sh ./ ~/.cache/dein

For Windows(PowerShell)

Invoke-WebRequest -OutFile installer.ps1
# Allow to run third-party script
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# For example, we just use `~/.cache/dein` as installation directory
./installer.ps1 ~/.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.