Show HN: SpaceNeovim – Spacemacs for Neovim
github.com
github.com
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').
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.
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.
[0] http://ricostacruz.com/cheatsheets/vimscript.html
[1] http://www.ibm.com/developerworks/library/l-vim-script-1/
Reference to an other project (clone of XY) doesn't help much too.
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 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.
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 :)
That demo gif of proton looks really neat! Also, awesome to see you're using ClojureScript.
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)
[1] http://spacemacs.org/img/screenshots/ss1.png
[2] https://github.com/ceocoder/dotfiles/blob/master/spacemacs
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…).
When it becomes a bit more stable it will definitely be something I'll look into though :)