Hacker News new | more | comments | ask | show | jobs | submit login
Extensibility in Vim vs. Emacs (sjbach.com)
13 points by sjbach on Apr 7, 2009 | hide | past | web | favorite | 3 comments

That's a nice comparison - basically lists the reasons why I started looking for something better after writing 2-3 vim plugins... (it only misses the problem of integrating vim with external commands)

But then I found a really nice piece of software - Yi. It's a vim/emacs type (yes - both!) type editor. It's written and extendable in haskell. The keymap is implemented as a parser on user input, so keymap modules include vim (with modes / simple ex mode), emacs and others. The code is very easy to understand (I actually learnt haskell while patching it for my needs) and includes most standard features - tabs, buffers, editing, some syntax files... even basic ghci shell :)

It's not "ready" yet, but I would say it can be described as a "usable beta". If someone really likes the vim idea of editing with modes and is disappointed by vim's plugin model, then Yi is definitely worth a try.

Extending Vim really is a pain if you're trying to stay within Vim. Your best bet is to rely on piping output to other shell utilities to get the desired behavior. :r!cmd reads output of given command into current file. After selecting a set of lines with "V" you can pipe them through a shell command like so:

I've also found that you can accomplish a lot with a hastily recorded Vim macro. To start recording keystrokes into buffer "a":

When you're done, hit "q" again and you're macro is saved. "@a" to execute macro.

Vim commands string together pretty easily, and I've done some serious refactoring on good ol' C and ASM with this method back in the day.

These days I'm writing Java in Eclipse, which just doesn't have the same feeling to it.

Yi sounds like a good alternative to Vi and Emacs: the philosophy of Vi, with the extensibility of Emacs.

The catch? It's written in, and it's extension language is, Haskell (which is why I've never used it.)

Applications are open for YC Summer 2019

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