# Spacemacs: an Emacs distribution with Vim key bindings, installed by cloning into ~/.emacs.d

> Spacemacs is a community-driven Emacs configuration built around mnemonic key bindings and configuration layers. It is aimed at Emacs and Vim users who want a prepared starting point, and it asks for Emacs 28.2 or above.

**syl20bnr/spacemacs** — A community-driven Emacs distribution - The best editor is neither Emacs nor Vim,  it's Emacs *and* Vim!

- Repository: https://github.com/syl20bnr/spacemacs
- Website: http://spacemacs.org
- Stars: 24,565 · Forks: 4,829
- Language: Emacs Lisp
- License: GPL-3.0
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/syl20bnr-spacemacs

## What Spacemacs is for, and who it is aimed at

The problem Spacemacs addresses is the cost of assembling a working Emacs configuration before you can edit a file. Emacs ships with almost no key bindings enabled. Spacemacs ships a curated set, plus "hundreds of ready-to-use packages nicely organized in configuration layers", according to the README. The pitch is ergonomics, mnemonics and consistency: commands live behind prefixes such as SPC b for buffer commands and SPC p for project commands, so you recall a binding from its first letter rather than memorizing a chord.

The README describes it as being for both Emacs and Vim users, and says you can mix the two editing styles. That matters for pair programming, where two people with different muscle memory share one editor. It is a distribution rather than a package: you do not add it to an existing configuration, you replace the configuration with it. That is the first decision a reader has to make, and the README is explicit that the one-line install is for people who do not already have an Emacs setup.

## How the layers, core and key bindings fit together

The repository layout separates the machinery from the content. core/ holds the code that boots and manages the configuration. layers/ holds the configuration layers, which group packages and their settings by topic or language. init.el and early-init.el are the entry points Emacs loads. doc/ holds the documentation, including the general document and the FAQ, and tests/ holds the test suite that the elisp_test workflow runs on the develop branch.

A layer is the unit of extension. Instead of writing package declarations and key bindings by hand, you name the layer in your configuration and the distribution pulls in the packages and the bindings that belong to it. The README points to CONVENTIONS.org for the rules layers follow, which is the detail that makes the collection coherent rather than a pile of unrelated snippets. The key binding scheme is layered on top of the same structure: the mnemonic prefixes are consistent across layers, so learning SPC p for project commands once applies wherever you are.

The README states the project is in beta. That is worth taking literally when you plan an upgrade: the develop branch is where work happens, and the project asks for contributions rather than promising stability.

## Installing Spacemacs and pressing the space bar for the first time

Spacemacs is installed by cloning the repository into your Emacs configuration directory. The README gives this as the quick start for people without an existing Emacs setup. Note that it overwrites whatever is at that path, so move an existing configuration aside first if you have one.

```bash
git clone https://github.com/syl20bnr/spacemacs "${HOME}/.emacs.d"
```

On Windows the README gives the PowerShell equivalent, and a fallback path when HOME is not set in the environment or the registry.

```powershell
git clone https://github.com/syl20bnr/spacemacs "${env:APPDATA}/.emacs.d"
```

Before any of this, the prerequisites apply. Spacemacs requires Emacs 28.2 or above, git to download and update it, and tar, in particular GNU tar, to install and update the Emacs packages it uses. A line searching program is optional but recommended: ripgrep, the silver searcher, ack, or grep as a fallback. The README calls grep very slow and recommends ripgrep.

Once Emacs starts with this configuration, the first instruction in the README is to press the space bar. That opens the interactive list of key bindings. The home buffer also has a [?] button with first key bindings to try. For the documentation itself, SPC h SPC opens it, and each layer has its own documentation behind the same binding.

## The release list is not a maintenance signal

The most recent tagged releases in the repository are v0.200.13 from 2018-01-25, v0.200.12 from 2018-01-24 and v0.200.11 from 2018-01-23. Anyone who reads only the releases page will conclude the project stopped eight years ago. The repository is not archived, and the last push to it was on 2026-09-15, so that conclusion would be wrong.

The practical consequence is that you cannot use version numbers to decide what you are running. If you clone the default branch, which is develop, you get whatever was committed most recently, and the CHANGELOG.develop and CHANGELOG.org files are where the change history lives. There is no release artefact to pin to. If your team needs reproducible editor environments, this is a real friction point: you would pin a commit hash yourself, and nothing in the repository suggests the project publishes one for you.

## Where Spacemacs is the wrong choice

The clearest case against it is an existing, working Emacs configuration. The README says the one-line install is for people who do not have one, and directs everyone else to the full installation instructions for other options. If your init.el is something you have tuned for years, adopting a distribution means either giving up that tuning or spending time expressing it as layers and private configuration.

The second case is a reader who wants a small, legible configuration. Spacemacs is deliberately large: it loads packages you did not ask for, and the layer system is an abstraction over Emacs package management rather than a thin wrapper. Debugging a startup problem means understanding the distribution's loading order, not just your own file. The README does not document a rollback path if an update on develop breaks your setup, and the tests/ directory and the elisp_test workflow are the only stated verification mechanism. The README also states the project is in beta, so treat the develop branch as a moving target rather than a stable product.

The third case is a user who does not want to learn Emacs at all. Spacemacs is an extension of Emacs, and the prerequisites make that explicit: Emacs must be installed first, and the development version of Emacs is not officially supported.

## Doom Emacs and the difference in approach

The obvious alternative is Doom Emacs, which appears repeatedly in what people search for alongside this project. Both are Emacs distributions with Vim-style editing and a module or layer system, and both are installed by cloning into an Emacs directory. The difference is in emphasis. Spacemacs foregrounds discoverability: the space bar opens a browsable list of bindings, prefixes are chosen for mnemonics, and the README describes the configuration as focused on ergonomics and consistency. Doom is generally described by its users as optimizing for startup time and a leaner configuration, and it does not carry Spacemacs's beta label in the same way.

That framing is not a benchmark. I have not measured either one, and the Spacemacs README makes no performance claim. The honest way to choose is to look at what you will actually do: if you want to browse bindings and have the editor teach you its own key map, Spacemacs is built around that. If you already know Emacs well and want a smaller configuration you can read end to end, a distribution of either kind is probably the wrong starting point.

There is also plain Emacs with your own configuration, which is the choice the README implicitly acknowledges by sending existing-configuration users to the full installation instructions.

## Licence and the cost of tracking develop

Spacemacs is GPL-3.0. The README links to the GPLv3 text and the repository carries a LICENSE and a COPYRIGHT file. For most users this changes nothing: you are running the software and editing your own configuration. It matters if you redistribute a modified Spacemacs, or ship it inside a product, because the GPL's copyleft terms attach to derivative distributions. That is a statement about the licence, not legal advice; if you are redistributing, read the licence text and the COPYRIGHT file rather than this paragraph.

The upgrade cost is the part people underestimate. There is no tagged release to move between, so updating means pulling the develop branch and letting Emacs install and update packages on the next start. The README lists tar, specifically GNU tar, as a prerequisite precisely because that package installation and update path depends on it. When an update lands badly, the README does not describe a supported way to go back; you would be reverting a git checkout yourself. Budget for that before you make Spacemacs the editor your whole team clones.

## Conclusion

Adopt Spacemacs if you want a prepared Emacs configuration with mnemonic key bindings and you are comfortable tracking the develop branch, because the newest tagged release is v0.200.13 from 2018-01-25. Do not adopt it if you want a small, hand-written init.el you fully control, or if you expect numbered releases with a changelog per version. Before cloning, verify your Emacs version is 28.2 or above, that git and GNU tar are installed, and check the commit dates on develop rather than the release list.

## FAQ

### How do I install Spacemacs?

Clone the repository into your Emacs configuration directory with git clone https://github.com/syl20bnr/spacemacs "${HOME}/.emacs.d", then launch Emacs. The README gives this one-line install for people who do not already have an Emacs setup. You need Emacs 28.2 or above, git and GNU tar first.

### How do I install Spacemacs on Windows?

The README gives a PowerShell command: git clone https://github.com/syl20bnr/spacemacs "${HOME}/.emacs.d". If HOME is not set in the environment or the registry, it gives the fallback path ${env:APPDATA}/.emacs.d instead.

### How do I use Spacemacs?

After starting Emacs with the configuration, press the space bar to open the interactive list of key bindings, or use the [?] button on the home buffer for first key bindings to try. Press SPC h SPC to open the documentation, including per-layer documentation.

### What is Spacemacs?

It is a community-driven Emacs distribution built around mnemonic key bindings and configuration layers, described in the README as a set-up focused on ergonomics, mnemonics and consistency. The README states it is an extension of Emacs and is currently in beta.

### Is Spacemacs dead?

The repository is not archived and the last push was on 2026-09-15, so the project is not abandoned. What looks stale is the release list: the newest tagged release is v0.200.13 from 2018-01-25, while development happens on the develop branch.

### Which is better, Doom Emacs or Spacemacs?

Both are Emacs distributions with Vim-style editing installed by cloning into an Emacs directory. The README presents Spacemacs as focused on ergonomics, mnemonics and consistency, with the space bar opening a browsable binding list; no performance comparison between the two is published.

## Sources

- [License: GPL-3.0](https://github.com/syl20bnr/spacemacs/blob/develop/LICENSE)
- [Project website](http://spacemacs.org)
- [README](https://github.com/syl20bnr/spacemacs/blob/develop/README.md)
- [Releases](https://github.com/syl20bnr/spacemacs/releases)
- [syl20bnr/spacemacs on GitHub](https://github.com/syl20bnr/spacemacs)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/syl20bnr-spacemacs
