
SpaceVim – Like Spacemacs, but for Vim - wsdjeg
http://spacevim.org
======
krzyk
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
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.

~~~
jasonm23
I wish people stopped calling a shared config a 'distribution'

In both Spacemacs and Spacevim, all that's being provided is a config. No
runtime, no package manager, no changes to the actual binaries of either app.

It's hyperbole.

~~~
banachtarski
^ someone who hasn't used either (or at least, not more than a few minutes)

~~~
jasonm23
I think 25+ years is plenty.

~~~
banachtarski
Oooo time traveler eh? Obviously I was referring to spacemacs and spacevim.

------
gravypod
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
> 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.

~~~
gravypod
I didn't know Spacemacs would automatically build and run things in one click.

How do you create a project in spacemacs? Is there a simple text-based UI for
it?

~~~
masukomi
that question doesn't even make sense. What is a "project"? My Rails project
is going to look radically different than someone's Go project, than a Rust
project, than an iOS / Swift project....

if you're talking "project" in the Atom / Sublime / Eclipse sense of the word
then a "project" is just a folder. If that's what you mean by "project" then
yes, you can create folders in a text-based ui, and you've been able to do so
since the dawn of unix, and basically every editor out there has an easy way
to either create a folder with some clicks or enable direct access to the
underlying shell to create one.

~~~
gravypod
If the idea of project creation isn't standardized in UI presentation then it
isn't an IDE.

------
caconym_
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
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.

------
Philipp__
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
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...

~~~
Philipp__
The point is how much of Spacemacs you end up using?! And in which languages
you work? Because, what consumes your time is not setup, with use-package
setup becomes trivial really, what sucks you in is learning the plugins and
how they work (cider, ensime, alchemist, magit, merlin, those are serious
environments not just syntax/autocomplete plugins). Idk if they come with
spacemacs, I doubt it, but what then makes the difference if they come with
Spacemacs or not, since most of the time you will spent on learning them, and
not setting them up.

Spacemacs is so customized that it is like learning new editor from ground up,
at least for me. Last year I spent solely using and learning Emacs, to the
point where every command and keybinds made sense, before that I used Vim for
years. After one year of training I decided to install EVIL, and now I am
enjoying Emacs and Vim a lot. Yesterday I downloaded spacemacs, opened it and
I was like, ugh, wtf now?! I just go overwhelmed by the amount of preexisting
code which I did not understand, and needed to crash a lot of hours to get
everything from ground zero.

~~~
the_duke
Just configuring all of the plugins with good key bindings takes a fair amount
of time. Just one of the things that SpaceMacs provides.

After a week or two with SpaceMacs I tried to start from a plain emacs and
build up my own config, but I gave up. Just too much hassle for me.

I probably would not have enjoyed SpaceMacs if I had used emacs at all before.
But I switched directly from Vim with no prior emacs experience, so for me
it's a perfect fit.

~~~
Philipp__
Yup, you are right. When I deleted Vim and Installed Emacs, I wanted to learn
Emacs and Lisp. That said I found configuring Emacs from scratch pretty good
for what I want so I sticked to it. But I think that it is not that scary and
hard as you might think! In 2 weeks I think you would be standing satisfied
with your new humble and clean Emacs configuration. :)

~~~
the_duke
My problem is that I'm not happy enough with emacs to fully dedicate myself.

I'd have to write my own editor for that. ;)

------
towb
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
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](https://github.com/bogado/file-
line)

~~~
thatmiddleway
Yea, this is always the big value for me from these distributions. I can
always find a cool plugin or bit of vimscript that I didn't know about.

------
PhasmaFelis
> _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
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."

~~~
eyko
The main difference is that in Spacemacs, you hit the space bar and you get
suggestions of commands to use, then you can narrow those down by navigating
those groups. For example, if you want search your project for a file, you
would hit the space bar then type "p" (for project). At that point a number of
choices appears, e.g. "f" (IIRC) is to find files in your project.

After a while it becomes sort of second nature:

SPC f s - file save

SPC m t f - mode test file (e.g. if you're in a go file it'd know how to run
tests for go files).

Another nice thing is that `SPC ?` brings up a prompt that lets you search for
commands: you type a keyword for example and you get all the editor commands
that match your keyword, so it's easy to navigate your editor shortcuts. That
was useful for me, since every result came with the "spacemacs" shortcut, and
the Emacs shortcut, so I ended up learning Emacs for free (I was coming from
Vim).

Note: I've also tried Spacevim and the only thing it has in common with
Spacemacs is the mnemonic key bindings. It doesn't seem to be discoverable (at
least not with SPC ?) and it also doesn't seem to be consistent (I couldn't
"guess" what certain things were, in spacemacs it's consistent enough that you
can guess). Those are the main core pillars imho:
[http://spacemacs.org/doc/DOCUMENTATION.html#core-
pillars](http://spacemacs.org/doc/DOCUMENTATION.html#core-pillars)

~~~
verandaguy
That's actually a funny coincidence. I've got <Esc> remapped to my spacebar in
vim, so the <Spc> f s is a lot like <Spc> w that I use.

------
chrismorgan
… 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
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.

~~~
chrismorgan
One big hint: leave blank lines between block elements. (It’s the same in
reStructuredText, except that it actually complains if you do it incorrectly
rather than being silently inconsistent as all Markdown implementations that I
know of are.) Not doing that is the main thing that’s wreaking havoc here.

------
johncoltrane
No. Spacevim makes vim works _differently_.

~~~
allover
To be fair that's the submitter's title, it's not from the SpaceVim site.

~~~
auscompgeek
The submitter is also the author of SpaceVim. Perhaps this should be a "Show
HN" instead?

------
mavdi
Can't get it to work properly, it seems to be very buggy currently or cerain
instructions are missing.

------
leblancfg
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
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...](https://htmlpreview.github.io/?https://github.com/notmatthancock/acm-
computing-seminar/blob/master/resources/langs/cpp/index.html)

------
hollander
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

       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.

------
perlpimp
I am kinda confused since
[https://github.com/Tehnix/spaceneovim](https://github.com/Tehnix/spaceneovim)
also exists out there.

~~~
tom_mellior
That's a fork of
[https://github.com/ctjhoa/spacevim](https://github.com/ctjhoa/spacevim)

------
Royalaid
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_
What exactly is a "premium colourscheme"?

~~~
justRafi
when I coined it, I was thinking about color-schemes that are aesthetic and
well maintained.

------
drKarl
This uses NeoVim, for a similar bundle using Vim there's some options like
Steve Francia's
[https://github.com/spf13/spf13-vim](https://github.com/spf13/spf13-vim)
(called Ultimate Vim Distribution)

------
desireco42
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.

------
unk
looks like a forked version of [https://github.com/rafi/vim-
config](https://github.com/rafi/vim-config). I'd say the inspiration is mostly
from this and not Spacemacs.

~~~
justRafi
yep. it's a fork from several months ago. too bad he didn't use the button.

------
hydandata
If this really were like Spacemacs it would ship with Emacs keybindings.

------
slax0r
FYI, if your ~/.vim dir is a symlink, the install script will fail to properly
symlink ~/.SpaceVim to ~/.vim

------
Shicholas
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.

------
shmerl
I'm using neovim as is. Is it a wrapper around it?

~~~
Gaelan
It's essentially a premade vimrc (.nvim/config) and set of packages.

------
timothylaurent
spacevim.org is getting blocked by my work's OpenDNS due to a 'security
threat'.

I wonder why?

~~~
wsdjeg
[https://github.com/SpaceVim/SpaceVim](https://github.com/SpaceVim/SpaceVim)

------
wsdjeg
Thanks for all of your feedbacks.

------
madmax108
The greatest dev timesaving tip that someone gave me was to clear my .vimrc
and start off with a blank slate. vim is a language in itself [1] and it's
easy to try to mimic someone who has conversational fluency in it, but as with
languages, the only way to learn in practice from the start. Projects like
SpaceVim try to create an IDE like environment, but because of being terminal
driven, it's difficult for anyone to "discover" features. You end up with a
large distribution with barely used features. Instead by growing and
maintaining your own vimrc, you get something that can be both used everywhere
(dotfiles and Github FTW) and work FOR you. At the end of the day, vim is JUST
another tool to make you work more efficiently.

Trust me. "truncate -s 0 ~/.vimrc" and take the time to learn. You won't
regret it in the long run.

[1]
[https://news.ycombinator.com/item?id=10315645](https://news.ycombinator.com/item?id=10315645)

~~~
shmerl

        truncate -s 0 ~/.vimrc
    

Shorter way:

    
    
        > ~/.vimrc

~~~
dotancohen
Smarter way:

    
    
        $ mv ~/.vimrc ~/vimrc-reference

~~~
shmerl
I'm trying to avoid cluttering $HOME. In my case it's ~/.config/nvim/init.vim

------
xkxx
Oh, yeah! Good old curl | sh via HTTP. Fucking awesome. I wonder how many
people get unknowingly pwned while executing such curl | sh instructions. It's
not hard at all to MitM HTTP, detect if shellcode is being transmitted, then
add your own instructions to it. Or you can just compile a list of known
sources that encourage to execute curl | sh and MitM only them if you want to
make your exploits even more discreet. What a nice way to get yourself your
own little botnet. Way to go! There's a catch though. You need access to
infrastructure of ISP. But is it that hard to get such access? No.

~~~
scrollaway
curl sh is no more dangerous than running any script you haven't read, or
binary you haven't decompiled for that matter. The odds of mitm are exactly
the same.

~~~
xkxx
There are 2 types of "any script you haven't read, or binary you haven't
decompiled": 1. scripts and binaries you obtained from somebody you trust in a
safe authenticated way; 2. everything else.

When I update my Debian distro, I get binaries via HTTP, that's true. But I
also have the public keys of my distro's maintainers whom I trust. The
authenticity of every binary I download is automatically checked using those
public keys. It's an example of "any script you haven't read, or binary you
haven't decompiled" type 1.

curl | sh via HTTP is an example of "any script you haven't read, or binary
you haven't decompiled" type 2.

curl | sh via HTTPS is an example of something that is very-very close to "any
script you haven't read, or binary you haven't decompiled" type 1.

~~~
kelnos
Do you never install any software outside Debian's main apt repos? Never add a
3rd-party apt repo for anything that maybe you didn't trust as much? Never
clone a git/hg/svn/etc. repo from somewhere and build & install the software
yourself?

Ok, let's say you don't do any of that. The Debian developers are still
fallible, and they certainly don't audit the source code of everything they
package. Sure, you have to trust _something_ , and I'll certainly agree that
it's more reasonable to trust the Debian packagers (and their distribution
infrastructure) than a lot of other things, but saying "curl | sh" (when
you're curl'ing over https at least, from a website you can reasonably expect
not to be compromised) is always bad is a bit extremist. At any rate, the
shell script you download is there for you to inspect before running, and if
you're not happy with it, you don't have to run it.

Personally, my main beef with that sort of thing is that I want to know if the
script is going to accidentally clobber any existing files, or install things
to a location where I might not prefer them to be installed.

Edit: I'm only now realizing that the OP has you curl from a non-TLS
webserver, which I imagine is the first thing that got you upset. Ugh. Asking
people to install something that way is just irresponsible.

~~~
eeZah7Ux
> The Debian developers ... don't audit the source code of everything ...

Strawman. If an amount of critical code is audited (and it is) it's still much
better than nothing.

> I want to know if the script is going to accidentally clobber any existing
> files

Packages are tested on various hosts and architectures. The packaging system
check for files being overwritten and that the package can be removed cleanly
Also suspicious things (e.g. unsecure file permissions) are checked.
Sandboxing tools are often used to contain daemons.

Furthermore the package content is tracked, while "curl | sh" cannot guarantee
that the same script will be received every time or by every user.

~~~
kelnos
> Strawman. If an amount of critical code is audited (and it is) it's still
> much better than nothing.

Is it, though? I'm specifically thinking about the Debian fiasco a few years
ago when a packager broke OpenSSL's key generation. Clearly less scrutiny is
paid than one might think. I'm unable to find any
evidence/documentation/anything that suggests that code audits by Debian
packagers of critical packages are done regularly (or ever).

I did find a few links to some Debian-specific tools to aid code auditing, but
nothing to suggest where they're used, how often, and on what packages.
Regardless, they look more like linters and static analyzers -- nothing that
would help you discover backdoors or just flat-out malicious behavior.

> The packaging system check for files being overwritten...

Yes, I'm well aware, not sure why you're bringing this up. I was merely
pointing out (regardless of any other argument being made) that file-
clobbering _is_ a reason why "curl | sh"-style installation bothers me,
personally, much more than possible security considerations, which I consider
to be overblown.

------
xkxx
I think scrollaway is here to troll. No need to reply to him seriously. You
may reply to him in a humorous manner or just scroll away from his comments,
just like his nick recommends us to do.

~~~
dang
Personal attacks are not allowed on Hacker News. You've already broken HN's
civility rules more than once. Please (re)-read the following and stop doing
that:

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

[https://news.ycombinator.com/newswelcome.html](https://news.ycombinator.com/newswelcome.html)

We detached this comment from
[https://news.ycombinator.com/item?id=13316485](https://news.ycombinator.com/item?id=13316485)
and marked it off-topic.

------
tdjackey
aha

