Hacker News new | ask | show | jobs
by gilgad13 5546 days ago
I personally use vim, and have gotten very used to the action+movement commands and the modal behavior.

However, I am very jealous of emacs' integration with other OS tools. Nothing in vim comes close to emacs integration with gdb and lisp REPLs (slime, etc). So I could see using emacs+viper if I was programming lisp, or doing a lot of debugging.

Also, I feel that vim is a very powerful text editor, but only a competent text creator. How do emacs users feel about the distinction?

1 comments

I'm in the (seemingly small) group of people that has several years experience with both. I think that vi is a better editor (I prefer its compositional & modal keyboard interface to Emacs's modifier keys), but Emacs's multi-buffer model and extensibility make it a much better integrated environment. On the balance, Emacs wins, but I tend to use nvi or mg for very quick edits. (OpenBSD's default install has them both.)

vi and Emacs are both excellent, and I'd recommend picking one (or an equally sophisticated editor) and mastering it, rather than waffling back and forth. For any professional programmer, the time invested in learning a powerful editor will quickly pay for itself.

I find viper mode unsatisfying - few to no mode / extension writers provide alternative keybindings for it (shocker), so you end up having using Emacs keys anyway, only with more cognitive dissonance. Other people may feel otherwise, but that's my experience.

Do you program Lisp in Vim ever, or always Emacs? I'm a vim user, working through some Lisp books and wondering what the best workflow for Lisp in Vim is, or whether I should start learning Emacs for Lisp.
I use vim for developing in Lisp, using Nekthuth to connect to SBCL's REPL:

http://nekthuth.com

Nekthuth doesn't have anywhere near the number of features or intimate integration with Lisp that SLIME has, but it's good enough for me.

I had tried Emacs with vimpulse and viper mode. Although it did make using Emacs less painful, it still required way too much knowledge of Emacs to use effectively and configure than I had time to dedicate to learning it.

Emacs+SLIME+vimpulse+viper might be good enough for someone who already knows Emacs or who hasn't invested a lot of time in learning vim. But for someone fluent in vim, I just don't think huge time investment in learning Emacs well is worth it.

I do all my programming in Emacs and use vi or mg* for sysadmin-ing, basically. I started using Emacs when I was learning Common Lisp and was blown away by Marco Baringer's SLIME (http://common-lisp.net/project/slime/) video. I had been using vi/vim for 4-5 years before that.

* a mini-Emacs, basically core Emacs without the extensibility. If it wasn't installed on OpenBSD by default, I would probably just use nvi in its place.

That said, using vi(m) for Lisp is not that hard. Paul Graham says he uses vi in his programming FAQ (http://paulgraham.com/pfaq.html). Mainly, you just need a good setup for "copy this block of code to the repl", "reload the file I just saved", and the like. A bit of integration greatly reduces friction, and Lisp development is all about reducing friction for quick experimentation and testing. (Not so sure about doing Emacs Lisp in vi, though... ;) )

Thanks, that's exactly what I'm trying to figure out, how to reduce friction while programming Lisp in vim. Will keep googling and experimenting.
There are probably better people to ask; it's been asked many times before. The problem is one of skill set overlaps, as xach notes (http://www.xach.com/img/lisp-and-vim.png). Also, I actually program more in Lua, C, Erlang, and a few other languages than Lisp from day to day.

Starting points:

http://cybertiggyr.com/15-vim/

http://stackoverflow.com/questions/94792/using-vim-for-lisp-...