Skip to content

SpaceVim

Written: 2026-08-23

Overview

SpaceVim — a community-driven Vim/Neovim distribution with a layer system inspired by Spacemacs, bringing mnemonic SPC-leader bindings to Vim.

Aspect Detail
Base Vim 8+ or Neovim
Config ~/.SpaceVim.d/init.toml
Package system Layers + custom plugins
Leader key SPC (space bar)
Local leader , (language-specific actions)

Installation

# Automatic installer
curl -sLf https://spacevim.org/install.sh | bash

# For Neovim specifically
curl -sLf https://spacevim.org/install.sh | bash -s -- --install neovim

Configuration (init.toml)

# ~/.SpaceVim.d/init.toml

[options]
    colorscheme = "gruvbox"
    colorscheme_bg = "dark"
    statusline_separator = "arrow"
    buffer_index_type = 4
    enable_tabline_filetype_icon = true
    enable_statusline_mode = true
    filemanager = "nerdtree"
    bootstrap_before = "myconfig#before"
    bootstrap_after = "myconfig#after"
    relativenumber = true

# Layers
[[layers]]
    name = "autocomplete"
    auto_completion_return_key_behavior = "complete"
    auto_completion_tab_key_behavior = "smart"

[[layers]]
    name = "shell"
    default_position = "bottom"
    default_height = 30

[[layers]]
    name = "git"

[[layers]]
    name = "lsp"

[[layers]]
    name = "lang#python"

[[layers]]
    name = "lang#rust"

[[layers]]
    name = "lang#typescript"

[[layers]]
    name = "lang#markdown"

[[layers]]
    name = "format"

# Custom plugins
[[custom_plugins]]
    repo = "tpope/vim-surround"
    merged = false

Key Bindings

File & Buffer

Key Action
SPC f f Find file
SPC f s Save file
SPC f S Save all
SPC f r Recent files
SPC f t Toggle file tree
SPC b b Buffer list
SPC b d Delete buffer
SPC b n / p Next / previous buffer
SPC 1-9 Switch to buffer by index

Window

Key Action
SPC w v Split vertical
SPC w s Split horizontal
SPC w d Close window
SPC w h/j/k/l Navigate windows
SPC w H/J/K/L Move windows
SPC w = Equalize window sizes

Search & Project

Key Action
SPC s s Search in buffer
SPC s p Search in project
SPC s f Search files by name
SPC p f Find file in project
SPC p p Switch project
SPC p t Toggle file tree

Language (Local Leader ,)

Key Action
, g d Go to definition
, g r Find references
, r Rename
, f Format file
, e Show errors
, d Show documentation

Git

Key Action
SPC g s Git status
SPC g c Git commit
SPC g p Git push
SPC g d Git diff
SPC g b Git blame

Available Layers

Category Layers
Completion autocomplete, denite, unite
Languages lang#python, lang#rust, lang#go, lang#java, lang#typescript, lang#c
Tools git, shell, format, debug, test
UI colorscheme, ui, treesitter
Frameworks lang#vue, lang#react
Integration lsp, ctags, tmux

Custom Functions

# In init.toml
[options]
    bootstrap_before = "myconfig#before"
    bootstrap_after = "myconfig#after"
" ~/.SpaceVim.d/autoload/myconfig.vim

function! myconfig#before() abort
    " Settings applied before SpaceVim loads
    let g:mapleader = "\<Space>"
endfunction

function! myconfig#after() abort
    " Settings applied after SpaceVim loads
    set scrolloff=5
    set wrap

    " Custom mappings
    nnoremap <leader>ot :terminal<CR>
endfunction

SpaceVim vs Other Distributions

Aspect SpaceVim Spacemacs LazyVim (Neovim)
Base editor Vim or Neovim Emacs Neovim only
Config format TOML Elisp Lua
Layer system Yes Yes Modules
Mnemonic keys SPC-based SPC-based SPC-based
Startup time Fast (< 500ms) Slow (2-5s) Very fast (< 200ms)
Customization TOML + VimScript Elisp Lua
Ease of use Easy (TOML) Medium Medium (need Lua)
IDE completeness Good Excellent Excellent