In general, I think people really sell themselves short by using an editor "distribution." It's a "teach a man to fish" situation. The whole point of being able to configure Emacs or Vim is so that each person can make it into the tool he or she wants it to be.
That's sort of why I recommend Vim as an IDE[1] to people. It teaches people how to configure Vim for themselves, so they can better understand how the pieces come together.
This is also why I decided to use Keith Bostic's nvi [0], also known as vi from BSD. I got so tired of endless configuring and bikeshedding my own editor instead of getting work done.
Since I switched to nvi I've learned way more about the powerful features of the base editor as well as shell tools like grep, fzf, fmt, column, wc, expand, pdftotext, pandoc, make, git... With tmux I have easy access to any REPLs and man pages I need. The main feature of nvi I need over the original vi is unlimited undo, though ex command history and file name completion are nice as well.
Part of the inspiration for me to switch from vim (and spacemacs) down to nvi was this post on stack overflow [1]. When I really grokked the power of this system I picked up O'Reilly's book on vi and vim [2] and read every page of the vi and ex stuff. There is soooooo much you can do with this editor that doesn't require plugins yet people reinvent them, often in a less powerful/flexible way.
Since learning to be productive in nvi, it's going to be very hard to go back to those bigger, more extensible editors. The temptation for bikeshedding is too great... Oh, and learning to read code with syntax highlighting turned off is really nice. It helps you write more clearly since you aren't relying on the highlighting to help the reader.
Yeah, I'm aware of text objects (I used vim for years). I don't miss them as much as I thought I would. Most of them can be replaced by compositions of the primitive motion commands. Heck, you could probably even outright replace them with macros. I just haven't felt the need to.
Lately I've been writing a lot of LaTeX rather than programming. Nvi has macros, mappings, and abbreviations so it's not hard to deal with verbosity. In the past, I've written in languages like python, Haskell, SQL, R, and even HTML. It's never been a problem. I've never had to write Java though, so maybe I'd use something else if I were forced to.
Code completion, like syntax highlighting, seems to be one of those tools that changes how you think and I'm not sure it's for the better. Being able to quickly bang out a bunch of glue code may be great for a 9-5 but I think it gets in the way of the creative process. That's just my opinion, though. I'm not aware of any research into this idea.
I personally have never used code completion, though I don't think it's affected me much as a C, Python and Lisp programmer. I wouldn't want to try Java without an IDE, though (I use Emacs).
I agree with this sentiment. Spacemacs is great, and if Spacevim is anything like it, it will be a great way to get a pretty full featured Vim editor.
However I've recently started from scratch with Vim 8.0 so that I could try out the new packaging features that are built in. I also wanted to be able to use the same configuration across Windows and Linux, which I'd found difficult with some package managers.
I've been pretty happy with the result so far. There are still some things that don't work correctly on Windows (shell incompatibilities in plugins mostly), but for the most part it's my IDE now.
One thing I will say for distributions is that it is a great source of new plugins that I haven't heard of or considered before.
You miss a major benefit: the ecosystems of these editors evolve very quickly. Packages are updated and broken regularly, adding new features and interoporability that you may not be able to learn about yourself.
A community configuration like Spacemacs will continually update to provide you with a configuration that is up to date and doesn't break.
A community configuration like Spacemacs will continually update to provide you with a configuration that is up to date and doesn't break.
As far as I understand, it currently does not do that, since elpa/melpa/... packages are updated out of sync with Spacemacs and the last Spacemacs release is over 2 months old. See:
But, there is hope, the release notes for 0.200 say:
For 0.201 we plan to introduce stable snapshots of elpa repositories, a new installation of Spacemacs will always install packages from this stable source.
This is a tradeoff not everyone can afford to make. A clean Spacemacs installation right now brings in a broken org-mode that cannot do exports. Spacemacs needs version pinning and stable package channels.
Vanilla vim is like compiling - efficient, but with a huge upfront investment. A vim 'distribution is like JITing - you end up at roughly the same spot, but it actually lets you do the thing in the meanwhile.
One of the reasons I like vim is that I can find vim or vi almost anywhere I need to work, but I try not to configure it too much (and lose out on what people say is one of the greatest advantages) BECAUSE I work on so many servers... is there a solution other than "carry your config and plugins everywhere?"
Tramp mode in Emacs is great for this, you can edit files over ssh seamlessly from your desktop. It works even better if you use Emacs as a terminal, as then you pretty much use tramp for everything.
I used this approach, but the problem with it is that all the plugins should be synced in it, so the repository becomes larger and larger with time, or kept as submodules what adds additional friction. Also you should manually copy .vimrc to your home directory from the cloned repository.
So I put to the repository only .vimrc and an short shell script install.sh that installs Vundle, .vimrc, and then installs all the plugins by running "PluginInstall" command in vim. Installation becomes just cloning the repo and running install.sh from it.
The additional benefit in comparison to say putting plugins to git submodules is that I don't have to keep my vim repository at GitHub up-to-date with latest plugins versions because Vundle anyway installs the freshest versions.
My point, which I didn't state clearly, is that there are situations where this isn't really feasible; secured networks, servers not on the internet, etc.
I echo this sentiment. I was never able to truly get productive with vin until I started with a vanilla configuration and added features as I needed them. Once I did that it fit like a glove.
I think some people will find this to be the case, but others (me) are really happy using a distribution. I struggled for a while trying to get vanilla Emacs to the point where it felt natural and didn't bother me, but ultimately wasn't able to. I've been using Spacemacs now for over half a year with only a handful of customizations, and I've been very happy with it.
I tried spacemacs and some other distributions/vimrc config files. The problem is if you do not know the reason for each line in vimrc and each key mapping/plugin in your vim environment, you wont be able to appreciate the beauty of vim no matter which distro you use. A distro is sort of similar to MS office, where a typical user will need less than 10% of the features, and remaining 90% stuff just adds to the bloat.
Thanks for the pointer. I do have seen that before. But I think it's not difficult to see the difference. First of all, they are maintained by different people with a distinct goal. SpaceVim is aiming to serve a counterpart to spacemacs, which more suitable for pure vimmers, I guess. However, space-vim is intended for switching between spacemacs and vim painlessly. I'm both a vimmer and spacemacs user, and I really like the interface and philosophy from spacemacs.
I think it's a great effort and it's looks really good, both visually and metaphorically. However, my reservations:
Beginners may find it hard to learn and extract its secrets. The code is wrapped up like a pass-the-parcel game. My .vimrc/init.vim files are comprehensive yet easy to read in one hit. One use-case for my config is that I frequently lob the whole thing at friends and colleagues and they have a complete picture - plugins and configuration - immediately.
This system is a completely different path for using Vim, and will definitely work for many people, but one of the major problems of any configuration distribution is that users make a choice by selecting it, to work with its abstraction and often only that. Hacking things in quickly might work, but it might make a mess. The first update or git pull/rebase after a hack... well, it could go wrong.
Appealing if you never want to do anything to Vim.
I'm a firm believer of knowing what each line in .vimrc does. But I'm not above rummaging though other people's .vimrc files and plundering without shame :D
It is quite simple to add something similar to your existing setup. Just split your configurations into logical packages and include them from your main.
Can anyone share their experience using this coming from Spacemacs? I've tried the other Spacevim package but the key bindings were weird for me. I switched from Vim to Spacemacs about 2 years ago and I've forgotten everything besides the text editing stuff.
Interesting. If there is a workable org-mode replacement that gets org-agenda I would consider switching away from Emacs to Vim or Neovim. I'm sick of using such slow and crash prone software. (Emacs is much better on Linux. I would love to use Linux as my daily driver but it's just not an option.) Since I've switched to Spacemacs it wouldn't be hard to port my small tweaks to recreate my personal preferences. But I really can't give up org-mode!
This looks cool! Recently i switched to Kakoune editor because i wanted to try something a bit different than Vim (after using Vim for years of course). Always appreciate new work in the editor space!
That's sort of why I recommend Vim as an IDE[1] to people. It teaches people how to configure Vim for themselves, so they can better understand how the pieces come together.
[1]: https://github.com/jez/vim-as-an-ide