Just to share a little about the motivation of this:
Switching back-and-forth a bit between Spacemacs and Neovim, I got inspired by spacevim[0] and thought to myself "Hey, that's a great idea!", and so I went into my first time actually toying with vim script (love-hate relationship atm).
The result of the last couple of days so far is the ground work for a Neovim specific port of Spacemacs, SpaceNeovim[1].
The major difference between this and the existing spacevim is that the layers are separated out from the core, and can be updated via an editor command (calling git pull). It makes it a lot nicer to add new layers later on (oh, and of course also the fact that I've dropped any though of vim support).
Contributions or feedback are more than welcome! :)
The easiest way, if you want, is probably to contribute a layer, or expand on an existing one at https://github.com/Tehnix/spaceneovim-layers. One of the goals is to match Spacemacs more-or-less, so switching isn't annoying (hence why buffer/filetype specific keybindings are behind a '+major-mode-cmd').
I always found myself convinced to use some plugin more often after watching some screencast or small gifs. If there are any already it would great if you could link them in project page.
How much of an investment is to learn vimscript? I want to write some plugins but I also don't really feel like learning it. Wish I could use different langs but from what I'm hearing I'd have to learn vimscript anyway.
If you're a programmer, not hard at all. The language is fairly simple and quite powerful these days. It has a few quirks, like variable scoping (global, local, buffer, window, tab), but these are great once you get used to them.
The hard part is learning the API, which takes a lot of googling. Start off writing some helper functions for your own use and turn them into plugins later.
Not that much to be honest, there are some quirks and such as variable scopings (g:, s:, l: a:) and other things, but other than that it's pretty familiar.
A few great resources I found after having googled a ton around was [0] and [1]. If you are very familiar with vim (I'm not really a power user tbh), then all the commands you use with : are supported in vim script. Meaning opening a split in your script is, well, just split.
Having spent a month with Spacemacs, to give it a shot, and returning back to Vim, I've been craving some of the Spacemacs innovations. Unfortunately, we can't get elisp, which is a big selling point of Emacs for me, but Spacemacs' narrowing search menus, following SPC, and its community-configured layers make it often enjoyable to adopt a new configuration.
It comes at a cost though, the abstraction. Many say "the Spacemacs source is so readable; if I want to tweak something, I can just find what I want and go from there." In practice, I have never found this the case (likely since I've used Emacs for only 2 months) and I don't imagine I'd find it the case with SpaceVim/SpaceNeoVim either, even after having used Vim for half a decade. As a result, I consider these projects to be a more robust vim-sensible, which is a reasonable starting point, or common point, for new users, users who want to share a single configuration, or users who don't desire absolute control and just want some features to work (i.e. everyone but power-users). Fortunately, that suits a lot of people. More power to them and good luck to SpaceNeovim.
That's really putting it mildly. Being able to evaluate any valid elisp form anywhere, directly or from a buffer, and affect the running state of the application, is pretty damn powerful. There is a point where the quantitative difference ("more" extension points) becomes so overwhelmingly large as to become a qualitative leap.
> That's really putting it mildly. Being able to evaluate any valid elisp form anywhere, directly or from a buffer, and affect the running state of the application, is pretty damn powerful.
That's possible in vim too. You can manipulate variables (end redefine functions if you're sadistic) in ex commands. Similarly, every time I save a vimL file it parses and updates running scripts.
This looks cool. I've been transitioning from an untidy, cruft-filled personal .vimrc to spacemacs but I find myself running back to vim frequently as I haven't learned the analogous key strokes for all of my basic usage/workflow yet. It looks like SpaceNeovim is still implemented in VimL; since Vim support is dropped, any chance switching to a Lua implemention?
Yeah, that particular itch is also one I'm scratching with this project - the .vimrc/init.vim quickly become cluttered.
>any chance switching to a Lua implemention
I'm more than open to it honestly. Initially I wanted to flesh out a bit of what was achievable, and since a lot of the layers mainly consist of configuring plugins and key mappings viml seemed easy to start with.
It's definitely something I'm looking into though :)
Another shameless plug but I'm the author of proton. We are doing something similar and porting a spacemacs inspired way of editing to atom. Check it out https://github.com/dvcrn/proton
Spacemacs is a supercharged version of emacs configuration set (~/.emacs.d), it makes Emacs look like this[1]. Spacemacs sets <SPC> as your leader key and turns configuration into "layers", each layer being a set of packages, keybindings and functions you can use.
Here is my .spacemacs file[2], I've been using it for last 45 days, before then I was pure Vim user for all my text editing and programming needs (except Java - where I still use IntelliJ)
I discovered Spacemacs in the beginning of my transition from vim to Emacs, and its familiar keybindings and "out of the box" experience really helped me stick with Emacs. These days I use my own Emacs config but that's not to say Spacemacs is not great.
The only times I use vim these days is to quickly edit a file when I ssh into other machines from anywhere other than my laptop. On my laptop, I use Tramp Mode[0] for accessing/editing remote files.
For programming Emacs is superior to vim for me personally; and even more so because my whole workflow is based around Emacs (coding, email, shell, Org mode, etc…).
I don't think so. In last couple of weeks I've discovered Org Mode, I really enjoy using it. Plus I like working in Emacs Lisp more than VimScript - something I never bothered to learn.
I gave it a go for a solid month and went back to vim. I don't believe anybody that likes spacemacs has customized their vim at all, or runs many plugins.
Switching back-and-forth a bit between Spacemacs and Neovim, I got inspired by spacevim[0] and thought to myself "Hey, that's a great idea!", and so I went into my first time actually toying with vim script (love-hate relationship atm).
The result of the last couple of days so far is the ground work for a Neovim specific port of Spacemacs, SpaceNeovim[1].
The major difference between this and the existing spacevim is that the layers are separated out from the core, and can be updated via an editor command (calling git pull). It makes it a lot nicer to add new layers later on (oh, and of course also the fact that I've dropped any though of vim support).
Contributions or feedback are more than welcome! :)
The easiest way, if you want, is probably to contribute a layer, or expand on an existing one at https://github.com/Tehnix/spaceneovim-layers. One of the goals is to match Spacemacs more-or-less, so switching isn't annoying (hence why buffer/filetype specific keybindings are behind a '+major-mode-cmd').
[0] https://github.com/ctjhoa/spacevim
[1] https://github.com/Tehnix/spaceneovim