16 comments

[ 8.1 ms ] story [ 71.9 ms ] thread
Just learned about Larry Tesler [1] and his fight for modeless software yesterday.

[1] https://en.wikipedia.org/wiki/Larry_Tesler

I'm not gonna lie, that sounds absolutely ridiculous and uninformed.

Everything in life depends on cause and effect and "modes". Your actions have consequences and should obviously affect future interactions.

I can totally understand that in certain instances, having "modes" or states in a software package might not be intuitive or preferred. But I also feel that having stateful software can be even more useful.

I think the popularity of Microsoft Word, in particular, shows how mode-less software is more broadly usable.
Some of these misconceptions are about having a poor UI and poor discoverability. I'm an avid vim user but I had to take a bet that the initial work to familiarize myself will pay off in the end. I'm happy I took the leap but it's daunting for anyone getting started.
I've been using vim for... 5 years? I initially forced myself to learn it (after being aware of vim and its learning curve) so I could work with a text editor that would be available on pretty much any linux server I might ssh into.

After about a year of mostly forcing myself to learn it, I started using it as my main text editor. At this point, I have a standard vimrc and plugins that I install on every new machine, including windows. Vim is my default text editor of choice.

Some of the benefits:

- Introduced me to the concept of not using your mouse and how much this increases the speed you can work. Introduced me to hjkl as movement keys (which at first glance was not obvious to me).

- Lots of commands to move around quickly. Lots of customization options for the constant tweakers in us. Core focus on changing text in as few keystrokes as possible.

- Lots of plugins to do all that cool "Oh, it would be cool if it did this." The "missing" features, like code completion or file system navigation, are available via plugins.

- The interface is very fast and pleasurable to use once you have familiarity with its incantations (which actually aren't so bad once you learn the basics).

I have no strong opinion of emacs, but it strikes me as similar in experience (if not implementation) to vim. I used sublime text for a while and liked it, although I kind of just ended up sticking with vim. It is funny how much programmers get into text editors, although they're important tools for the profession, so tradesmen obsessing over the tools they use probably isn't so new.

It's easy to survive in vim if you type in vimtutor in terminal.
I liked sublime but I found that when I wanted to do any power editing (refactoring, ...) I'd go back to vim. Now I used VimR + Solarized on the Mac.

emacs is plenty powerful and I tried it for awhile. I think if you start out with emacs, you'll stick with it.

I do like your point about being more productive without the mouse.

For anyone who uses emacs, do the keybindings make sense in english? ie: Y - Yank, D - Delete, cit - change in tag, etc etc.
What keeps me on Emacs is Elisp. With sth. like paredit editing lisp code becomes the easiest thing in the world, and what you can do and what is already available is awesome. And while Elisp is not the best lisp out there, it is pleasurable to write in and edit. I can't even pretend appreciating VimScript.

Then comes Quail and Org-mode.

You can learn the basics with this little browser video game:

http://vim-adventures.com/

I used to hate vim with a passion because of how unintuitive everything seemed, but this made me want to learn more once I get used to hjkl and some of the shortcuts.

Does anyone else use vanilla vim happily without plugins?
Yeah, although I always wonder if I'm missing anything w/ plugins.
I use plain vi quite a bit (normally emacs user) and it's pleasurable if you are (1) used to Ctrl-Z & fg on shell, (2) familiar with the Unix environment so that you'll rely on its toolchain instead of plugins for edits and (edit: 3) have grasped to a good extent the verb-movement-object system.
I happily use both: vanilla on servers, lots of plugins on personal machine. There are lots of nice plugins, and I don't buy the argument that using them makes me unable to figure out how to use the vanilla install when sshing.
Another misconception I would add is people thinking it improves productivity over what some people consider "newbie friendly" tools (GUI IDEs and the like). If you _LIKE_ using it, please go ahead. But AFAIK, there is no data showing any of these editors save you time over what you invested learning them. I was an expert vim user and I don't think I am ever going to recover the hours I spent learning it. For C++ these days, I find I'm actually more productive in Visual Studio than I could ever be in vim.
I think it's more about comfort than productivity. I find myself using control keys or reaching for the mouse far more often when using anything else to edit text, and it's just more pleasant to be able to stick to the letters on the keyboard as much as possible.

I think your point about productivity in VS probably has more to do with its IDE features than its text editing features doesn't it? I also enjoy using a good IDE, but I still lean heavily on (bad to mediocre) vim keybinding support. At least I can navigate and make small edits nicely, but for anything more advanced, it's straight back to the control key or right click menu.

What I'd really love to see would be an IDE designed from the ground up to be modeful, and to put the most common things you do in an IDE on easy to reach keys. The interesting part of vim isn't the specific keybindings, it's the philosophy, and as far as I've seen, nothing else embraces it.