Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm going to say vim, and I expect to get yelled at by folk who don't use vim, but here's why I call it elegant software:

Vim's entire command model is based on the simple composition of motion and action.

Until you understand this you will never 'get' vim. You may be able to use it, even efficiently, but you will never understand how these two simple concepts when fully understood are a force-multiplier.

Motion indicates a range, of characters or lines, there are motion keys that will get you: to EOL, to EOF, to next matching char, to braces, to function / class blocks, to predefined marks.

An action is something that applies to that range, these can be anything from auto-formatting, changing case, calling out to another process, anything you can imagine.

When you understand this suddenly g=GG, ct(, y$ become: reformat document, cut to next paren and copy till EOL respectively. Does that sound horribly esoteric? that's only because you don't yet understand vim motion composition.

I'm happy to argue that if anyone fully understands this concept they cannot help but agree that vim is at it's heart seriously elegantly designed software.



This. Plus: Macros.

I just recently had an opportunity to flex my "wizard muscles" in a case where we had to feed a test consisting of about a hundred similar messages with minimal differences (numbers) to a system in order to reproduce an issue.

  "Can't we try to reproduce this?"
  "Maybe, but we'd need a lot of messages in order to reproduce this."
  "And...?"
  "That's tedious."

  "Watch me" *grinning*
A couple of edits and a `100@q` later, we were ready to go.


Vim's UI is elegant, for sure. Its internals perhaps slightly less so, hence Neovim.




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

Search: