top | item 13315845

SpaceVim – Like Spacemacs, but for Vim

223 points| wsdjeg | 9 years ago |spacevim.org

176 comments

order
[+] krzyk|9 years ago|reply
Ok, but what it is? The page doesn't explain it. The top page explanation refers to spacemacs and most vim users don't know spacemacs.

Is it a vim plus a bundle of plugins?

EDIT: Cleaned up the spacemacs sentence.

[+] arnarbi|9 years ago|reply
It's a distribution, bundling vim with a whole bunch of plugins and configuration that's supposed to work out of the box.

Spacemacs is the same for Emacs.

[+] wsdjeg|9 years ago|reply
SpaceVim is a modular Vim distribution. but it has same idea with spacemacs. the goal of SpaceVim is to make user get a better experience of vim/neovim.
[+] Shicholas|9 years ago|reply
it's emacs with vim controls. FWIW, I wouldn't compare emacs with vim in this set up, but with something like tumx instead (and imo what emacs offers is better than tmux).
[+] gravypod|9 years ago|reply
All these "distrobutions" are going to do is further fragment the already extremely confusing terminal-text-editor world. There are so many configurations that it's never going to make sense to me.

If it was simple, there'd be an answer to this question: how do I setup Vim/Emacs as a fully feature complete IDE for C, C++, Rust, Go, Java, JavaScript (Node or Web), C#?

By feature complete I mean autocomplete, error detection, built in one-button-runs, automatic config/sane defaults.

Keep in mind this is a dream list. It's perfectly fine if the list only includes 2-4 of these languages but it needs to have all of these features.

Looking at this from the outside (people who use IDEs) in (onto the people who use Vim/Emacs) we have maybe 1 IDE/Language and that's confusing for us. I can't imaginge having 3 text editors all of which have different common dotfiles.

[+] tom_mellior|9 years ago|reply
> If it was simple, there'd be an answer to this question: how do I setup Vim/Emacs as a fully feature complete IDE for C, C++, Rust, Go, Java, JavaScript (Node or Web), C#?

That's the promise of Spacemacs:

- clone their git repository into your .emacs.d directory

- run emacs once, answer three basic questions about your preferences

- add your list of languages to the "dotspacemacs-configuration-layers" list in your .spacemacs

  - I even looked up the syntax for you: "c-c++ rust go java javascript csharp"
- make it reload the config

You're done. All this should take less time than it took me to look up those "layer" names in the docs.

> By feature complete I mean autocomplete, error detection, built in one-button-runs, automatic config/sane defaults.

Yes, all that is the promise of Spacemacs.

If anything, I found it to be too much of a kitchen sink (it tries too hard to be "smart" about balancing parentheses for me etc.). Still, you might want to give it a whirl if you have 15 minutes. I ended up going back to vim for almost everything, and I'm on the line on whether to use Proof General from plain Emacs or from Spacemacs. But the time to check it out is not wasted.

[+] sevensor|9 years ago|reply
Personally I'm thrilled by the fragmentation in this space -- I've been using Vim since 4.x, and vi before that. I've never found the plugins particularly enticing; every time I try using things that are outside the core distribution, they end up taking more time to maintain than they're worth. Since I mainly stick with the core distribution, Vim has felt pretty stagnant since it got code folding and syntax highlighting, more than 15 years ago. I've been trying alternatives -- spacemacs feels bloated, neovim is still carrying a lot of baggage (e.g. support for vimscript). So far Kakoune is the one I'm most excited about, to the point where I am right now updating my neglected Cygwin installation so I can try to build it for Windows. (Kakoune needs unix-style select, so native Windows builds are unlikely.)

> By feature complete I mean autocomplete, error detection, built in one-button-runs, automatic config/sane defaults.

By and large, I find features like these distracting to the point of unusability, which is why I like living in stripped-down editor land. Different strokes for different folks.

[+] rayiner|9 years ago|reply
There is a learning curve, but at least with MELPA setting up Emacs is pretty easy. Company is a good autocomplete backend, Irony is a good back end for C/C++, and Company-Go and Emacs-Racer will do you for Go and Rust. Each of these can be installed by using interactive commands (M-x package-install), and configured with a few lines in your init.el (almost entirely just copying and pasting from the Github front page of the respective package).
[+] yakubin|9 years ago|reply
I like the fragmentation, because different people have different needs. E.g. I prefer a much more minimalistic setup than my colleagues who use IDEs like Eclipse. I've never been able to comfortably use an IDE. And not a single vim config I found on the internet was right for me.

That said, I think many would agree that for C/C++ YouCompleteMe is a must-have. It has ctags functionality (but without false positives), error detection, autocomplete... And probably lots of other features I'm ignorant of.

There is a semi-official vim plugin for go. I used to use it when I was playing with this language. Same for Rust. I don't know about other languages you've mentioned.

As for the "distributions". I prefer to configure everything myself, but I get it that others might want everything preconfigured for them.

PS. Yes, I'd agree that vim has insane defaults. All vim config files I saw have a common part, I think.

[+] Waterluvian|9 years ago|reply
This is generally what roadblocks me when I try to pick up vim. The part I hate about atom is reaching for my mouse. But I like that I didn't have to sacrifice my firstborn to get a sane setup for three langauege simultaneously.
[+] caconym_|9 years ago|reply
I started using Spacemacs recently for its out-of-the-box IDE-like features but the layers' functionality seems to be fairly hit-or-miss and overall the impression is one of a bug-infested nightmare. Every time I try to set up my environment on a new machine, I get some new set of problems that I have no idea how to solve (disappearing powerline, broken neotree, weird projectile caching behavior totally breaking my workflow, busted syntax checking, and more). I don't blame the Spacemacs folks for this; I actually think what they've done is really cool. Emacs simply is what it is, I think. I don't have time nor inclination to learn elisp and build/fix my own environment.

When it does work, it's great. But the inconsistency is probably going to drive me away, back to Vim. I think that if anyone can build a similar thing for Vim that actually works, I'll use it in a heartbeat.

[+] michaelmrose|9 years ago|reply
I have the exact opposite experience with vanilla Emacs. It works consistently without issue.

Regarding plugins you can use melpa and track the latest release of everything at all times.

You can use melpa and update most stuff infrequently save for the ones that are most important to you.

You can use melpa stable and run only stable versions of everything.

You can use melpa stable and run newer versions of a minority of plugins that are important to you.

What plugins you choose to use and and whether you choose stable or unstable could very well lead to vastly different experiences.

The best strategy is to carefully select plugins which are useful to you and high quality, and run the stable versions of most things updating your tools infrequently when a new major release adds something that looks useful to you.

[+] quicknir|9 years ago|reply
There's a lot of factors here; were you on dev or master? What I suggest doing is using dev, but pinning yourself to a particular commit. Once you see that things are working, using that commit across all your machines. You can have a fork that you never push to, except to fast forward when you feel like upgrading. Just pull from that fork on new machines instead of from the main repo.

The only other thing that can break you other than updating spacemacs is updating packages, but that's a factor with vanilla emacs and with vim. This happens occasionally but not too often.

Also keep in mind: spacemacs is not all or nothing. There are many, many layers that are higher in the dependency tree, that both get less attention and are easier to swap. For instance, even though I mostly develop in C++, I don't use the C/C++ layer from spacemacs. There were things I wanted that were missing (like rtags), and things that I didn't want that were there (like older tags solutions).

I started out by just configuring rtags inside a single simple file, the same way a vanilla emacs user would, and I dropped the C++ layer. I eventually added more stuff and wrote my own C++ layer. I'm quite happy with the result. I still got a ton of useful layers/packages from spacemacs that were easily setup and configured, like evil, magit, helm, company, flycheck, etc. And the whole layer system itself made even the parts that I customized myself more modular.

[+] brudgers|9 years ago|reply
That's a general problem with many 'frameworks'. When something goes off the happy path, the abstraction is gone and the user is dealing with the underlying abstractions. Elisp for Spacemacs; JavaScript for the hotness of the month, and X11 for Ubuntu.

I don't think it's really possible to build something like Spacemacs for Vim because of the different underlying architectural decisions. Vim is a one-thing-only-and-do-it-well tool. Emacs is 'an operating system missing a decent text edtior'.

[+] hxegon|9 years ago|reply
I had the same experience with spacemacs, but it made me realize what I was missing with vim. Currently trying to build up an emacs/evil config from scratch.
[+] Philipp__|9 years ago|reply
I don't get Spacemacs hype. I tried it, and never felt comfortable using it. Started with blank .emacs.d, yeah I completely cleard whole configuration two or three times until I hit sweetspot. Now I'm sitting on ~250 loc config on vanilla emacs (including evil), and eveything works like a charm. Plus I learned a lot about elisp. I never liked those bundles and distributions. They always felt redundant, but I can understand the appeal to some people.
[+] the_duke|9 years ago|reply
I would probably spend more than 100 hours until I got to a point of equivalence with SpaceMacs, starting from a plain emacs.

Especially since I use quite a few different languages.

Ain't nobody got time for that...

[+] towb|9 years ago|reply
Yay for the effort! But personally I don't think this is a good way to learn and use vim. The strength of vim is to customise it after your own needs and you'll do yourself a disservice if you end up with a config that you don't know and don't use more than x percent of.
[+] scribu|9 years ago|reply
I agree, the usefulness of a "distribution" like this is getting some fresh ideas about how to customise the editor.

For example, this site listed some useful plugins that I didn't know about, such as https://github.com/bogado/file-line

[+] PhasmaFelis|9 years ago|reply
> Like spacemacs, but for vim.

This is one of the most obtuse project descriptions I've seen. If you're making a...whatever this is...aimed at Vim users, why would you expect them to be familiar with a something-or-other for Emacs?

[+] verandaguy|9 years ago|reply
Not to mention that (IIRC) Spacemacs involves installing evil-mode, which makes Emacs interactions similar to Vim interactions.

Taking that into account, this can be interpreted as "It makes Vim work more like Vim."

[+] gregpardo|9 years ago|reply
I was hoping to get all the same key commands from spacemacs in vim. This would be useful for me but it was anything but that.
[+] chrismorgan|9 years ago|reply
… and people wonder why I dislike Markdown. (There are fairly radical rendering differences between the GitHub page and the spacevim.org page, because different Markdown renderers with different bugs have been used, and the Markdown was fairly sloppily written.)
[+] ageofwant|9 years ago|reply
Yes I recognized the markdown fails from my own markdown fails. Especially when you move repos between github and bitbucket, and expect README.md to 'just work', it seldom does. I've gone between md, org and even rst. They are all great, but still suck in curious ways. pandoc helps but it is a whole kettle of fermented fish in itself.
[+] scrollaway|9 years ago|reply
It looks like whatever Github pages is using as renderer (kramdown iirc?) does not support postfix links like [dein.vim] here: https://raw.githubusercontent.com/SpaceVim/SpaceVim/dev/READ...

The table rendering issues I suspect are from the lack of a newline after the headers. I don't know whether it's correct or not because, yknow, markdown.

Still better than rst. :)

[+] ticoombs|9 years ago|reply
Is there a linter yet for markdown?
[+] johncoltrane|9 years ago|reply
No. Spacevim makes vim works _differently_.
[+] allover|9 years ago|reply
To be fair that's the submitter's title, it's not from the SpaceVim site.
[+] mavdi|9 years ago|reply
Can't get it to work properly, it seems to be very buggy currently or cerain instructions are missing.
[+] leblancfg|9 years ago|reply
Tried Spacemacs 3-4 times because of org mode. Most specifically inline code block execution, through org-babel. Still not ready to change over from vim, though.

What I haven't done is check neovim. Any comments regarding the potential for inline code execution?

[+] chestervonwinch|9 years ago|reply
Org-mode comes standard with plain emacs (no need for all the extra bells and whistles that come with spacemacs, necessarily). Since you're a vim user, try installing evil as a first plugin, and only adding additional ones as you see fit. I found that spacemacs did too much and preferred vanilla emacs + evil + a few python plugins. Still, I mostly use vim for smaller scripts. Emacs is better as an IDE in my opinion.

In my experience, you really can't beat Org-mode when it comes to inline code execution. You can preview LaTex and plotting inline as well. Plus, you can of course export the document into a variety of formats (HTML, PDF, etc.), which are quite customizable thereafter. Here is a document I put together with Org-mode for a short C++ seminar [1]. All the code is executable while editing the document in Org, which is nice for a number of reasons. I also added some custom CSS/JS for the HTML export.

[1]: https://htmlpreview.github.io/?https://github.com/notmatthan...

[+] hollander|9 years ago|reply
The install guide:

    vim sh mv ~/.vimrc ~/.vimrc_bak mv ~/.vim ~/.vim_bak git clone https://github.com/SpaceVim/SpaceVim.git ~/.vim
    nvim sh git clone https://github.com/SpaceVim/SpaceVim.git ~/.config/nvim
Why do people always expect the average joe user to understand this? What do I do with this? Do I run this in the terminal? Then what? First line opens Vim and it opens 11 files. Now what? This seems like the average explanation that works for the person who writes it, but is useless unless you know this already.
[+] ageofwant|9 years ago|reply

   for vim do: sh mv ~/.vimrc ~/.vimrc_bak mv ~/.vim ~/.vim_bak git clone https://github.com/SpaceVim/SpaceVim.git ~/.vim
   for nvim do: sh git clone https://github.com/SpaceVim/SpaceVim.git ~/.config/nvim
I'm guessing markdown fail.
[+] yrro|9 years ago|reply
Particularly annoying given that Vim 8 (finally!) has a perfectly fine packaging system.
[+] Royalaid|9 years ago|reply
This is awesome! For someone coming into the more "conventional" editor space scouring github/internet for plugins is a huge pain and its even harder to find ones that cover your cases and are kept up to date. Having this all rolled into one as and having it all work together in harmony is a big win for on boarding people to vim!

Disclaimer: I haven't tried this package but it does seem to have a lot of promise.

[+] fao_|9 years ago|reply
What exactly is a "premium colourscheme"?
[+] justRafi|9 years ago|reply
when I coined it, I was thinking about color-schemes that are aesthetic and well maintained.
[+] desireco42|9 years ago|reply
This is awesome, if there was one thing I saw in Emacs that I loved it, and no, it is not the famous OrgMode, it is this! Thank you.

For those who don't know what it is, it is showing possible keystrokes you can hit, which is super helpful when I was using new plugins and such.

[+] hydandata|9 years ago|reply
If this really were like Spacemacs it would ship with Emacs keybindings.
[+] slax0r|9 years ago|reply
FYI, if your ~/.vim dir is a symlink, the install script will fail to properly symlink ~/.SpaceVim to ~/.vim
[+] Shicholas|9 years ago|reply
just wanted to say thanks to the people who maintain this. I love spacemacs! first editor I picked up where the defaults get me >95% of what I want.