Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: A Vim distribution inspired by Spacemacs (liuchengxu.org)
175 points by liuchengxu on March 26, 2017 | hide | past | favorite | 50 comments



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.

[1]: https://github.com/jez/vim-as-an-ide


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.

[0] https://sites.google.com/a/bostic.com/keithbostic/vi/

[1] https://stackoverflow.com/questions/1218390/what-is-your-mos...

[2] https://shop.oreilly.com/product/mobile/9780596529833.do


As far as I remember you are foregoing text objects which are really one of the most powerful things in vim.

http://blog.carbonfive.com/2011/10/17/vim-text-objects-the-d...

Ironically I think most of the IDE (ie intellij etc) vim plugins have them while you do not.


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.


TIL that there are text objects for tags. Thanks!


What programming languages do you use with nvi? Some seem awfully verbose without some kind of code completion.


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've used "elvis" in the past as it has good syntax highlighting. I'm not seeing that as part of nvi's feature set.


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.

https://github.com/deevus/dotfiles/blob/master/.vimrc


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:

https://github.com/syl20bnr/spacemacs/issues/2057#issuecomme...

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.


'Up to date' doesn't mean 'bleeding edge'; a two-month-old (or even year-old) distribution can be up-to-date.


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.


I think this only works if we allow that JITing is harder to understand and improve, because distributions tend to be opaque.


Logged in to say thanks for the link.

If I may suggest - have you considered adding it to the Awesome List either at:

https://github.com/sindresorhus/awesome OR https://github.com/mhinz/vim-galore ?


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.


Upload your vimrc file and .vim directory to github and just do a clone on every new server.


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.


Which of course defeats the purpose in using a complicated but customizable program like Vim in the first place.


There's another distribution of Vim which also claims to be inspired by Spacemacs and is called SpaceVim (not space-vim as in this case).

Homepage: http://spacevim.org/

Hacker News discussion: https://news.ycombinator.com/item?id=13315845


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.


So you saw a previously existing library and literally just stepped all over its name confusingly? That's just plain rude.


I think you have a little misunderstanding here. Actually, space-vim is earlier than SpaceVim. You can check that.


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


Nice project. A little pun: if the author intended to follow the naming scheme of spacemacs project he or she should name this spacvim :D


Or rather spaceim :)


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.

Here is for example my Go "layer": https://github.com/dvcrn/dotfiles/blob/master/vim/lang/go.vi...

The top is describing plugins, the middle configuration and the bottom key bindings, including "mode keys" accessible over comma.

Also shameless plug to "proton", my atom plugin which tries to do the same thing. https://github.com/dvcrn/proton


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!


But I really can't give up org-mode!

...and inline LaTeX/image previews!

https://www.dropbox.com/s/hf5x3p9bne3tqbg/Screen%20Shot%2020...


And apparently nyan cat.


Yep, I often use spacemacs to write org and LaTeX. But sometimes I still love coding with vim and tmux in terminal :).


> Beautiful interface

Lol? It's 2017 and you're describing a text mode UI.

A "Beautiful theme" would be more appropriate.


Not a graphical user interface, but a text user interface?


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!


As a moderately good emacs&vim user, what can I do with this that I cannot already do in a base spacemacs install?


You can use VIM to kinda feel like you're in emacs but not be quite in emacs or vim... just a confusing middleground...


This looks friggin' awesome! Thanks!


Looks sweet! Downloading!


Installed, very cool installation process! 5/5!

And also, holy shit this vim config is great. I thought mine was great but this is just on another level!

Loving it so far!


Damn, this looks super sleek! http://imgur.com/a/0JF7B


daddy likes




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: