Skip to content
Spacemacs for Neovim—link to layers 👉
Vim script Shell
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
autoload Polish install script to do all steps for the user Nov 25, 2017
.gitignore ignore autogenerated files and dirs Feb 7, 2017
.mdlrc Add CI Aug 5, 2016
CNAME Update CNAME Jul 26, 2017
LICENSE Initial commit Apr 10, 2016
vimrc.sample.vim Add purescript language to default config Mar 22, 2020

SpaceNeovim - Spacemacs for Neovim Build Status

SpaceNeovim is Spacemacs for Neovim. If you are unfamiliar with Spacemacs, you can read more about the motivation behind that on their website.

Screenshot of SpaceNeovim



  • git on your path (brew install git)
  • nvim on your path (brew install neovim/neovim --head)
  • Neovim python bindings (pip install neovim or pip3)

SpaceNeovim is a configurable distribution like Spacemacs.

To start using SpaceNeovim you can use the following oneliner,

sh -c "$(curl -fsSL"

It will,

  • Backup existing Neovim configuration to .config/nvim.<date>.backup
  • Download a default init.vim
  • Download autoload/spaceneovim.vim
  • Set up vim-plug
  • Clone down the layers repository
  • Install default plugins

You can check out the process in the Asciicast below,



Go to the layers repository for more information on the different layers.

To enable a layer, include it inside the Layers() function, by calling Layer '<layer name>'. A small example,

function! Layers()
  " Configuration Layers declaration.
  " Add layers with `Layer '+layername'` and add individual packages
  " with `ExtraPlugin 'githubUser/Repo'`.

  Layer '+core/behavior'
  Layer '+nav/buffers'
  Layer ...

  PrivateLayer '+lang/elm'

  ExtraPlugin 'liuchengxu/space-vim-dark'
  ExtraPlugin 'neovimhaskell/haskell-vim', { 'for': 'haskell' }

The above also demonstrates ExtraPlugin, which will install plugins with vim-plug. The configuration is optional.

Private Layers

If you want to manage your own layers, you can put them into .config/nvim/spaceneovim-layers/private/ and load them like normal layers, except using PrivateLayer instead. E.g. PrivateLayer '+lang/elm'.


To set configuration values before layers and plugins load, set them in your UserInit(),

function! UserInit()
  " This block is called at the very startup of Spaceneovim initialization
  " before layers configuration.

  " Overwrite the leader key,
  SetLeader '<Space>'
  " Overwrite the layers repository,
  SetLayerRepo ''

To set configuration values after layers and plugins load, set them in your UserConfig(),

function! UserConfig()
  " This block is called after Spaceneovim layers are configured.

  " This will set the background to 'dark', the theme to 'space-vim-dark' and the airline theme to 'violet' (airline argument is optional).
  SetThemeWithBg 'dark', 'space-vim-dark', 'violet'
  " Alternatively, if you don't want to set the background, use,
  SetTheme 'space-vim-dark', 'violet'

The above SetTheme <background color> <theme name> <airline theme> is simply a convenience function. Similarly SetLeader allows you to set the key that activates vim-leader.


If you want to know what happens in autoload/spaceneovim.vim, check out the beginning of the file for a brief introduction into what is going on in the script.

To easily test your changes it is recommended to symlink the various files into your .config/nvim folder. The ones you want to replace are

  • .config/nvim/spaceneovim-layers to test layer changes
  • .config/nvim/autoload/spaceneovim.vim to test core changes
  • .config/nvim/init.vim to test changes to vimrc.sample.vim

Using your own layer repository

If you want to develop/test out your own layers, there are four ways to do it:

  1. Add your layer in .config/nvim/spaceneovim-layers/private/ and load them via PrivateLayer.
  2. Point to your own git repository with SetLayerRepo, e.g. SetLayerRepo ''. This should be set in UserInit().
  3. Manage the spaceneovim-layers directory yourself - the bootstrap process basically just checks if the directory exists, and if not it clones it down. Symlinking or putting in your own directory here will also work.
  4. Add a layer from a specific folder on your computer with SourcedLayer, for example SourcedLayer '/Users/myuser/.config/mylayers' '+cool/layer'.

Enable Debugging

You can enable debugging output by calling EnableDebug (or EnableVerboseDebug) in your init.vim file. This should be set in UserInit().

Pre commit linting

It is recommended to add the following to .git/hooks/pre-commit,

# Get the current dir
# Get the project root
rootDir=$(git rev-parse --show-toplevel)

cd $rootDir

# Run vint
vint vimrc.sample.vim autoload/*.vim




Can't see colors in tmux: This may be a problem with xterm-256 colors, as per issue #16 (thanks zacacollier) add the following your tmux.conf and restert your tmux with tmux kill-server,

set -g default-terminal "tmux-256color"
set -ga terminal-overrides ',xterm-256color:Tc'

LanguageClient:autocmd (and other Python related) errors

Example error: no notification handler registered for "/Users/ramanujam/.config/nvim/plugged/La nguageClient-neovim/rplugin/python3/LanguageClient:autocmd:CursorMoved:*"

Sometimes one of the plugins included might rely on updated Python bindings for Neovim, especially heavily updated, active plugins. Should you be getting Python errors even though you've installed the neovim bindings, update your bindings using:

pip install neovim
pip3 install neovim #python 2 is still default in some MacOS
You can’t perform that action at this time.