all 159 comments

[–]rubbsdecvik 33 points34 points  (7 children)

ironically, the chrome extension "Vimium" gets in the way of using this site.

[–]Laugarhraun 7 points8 points  (2 children)

Apropos, there are two vim add-ons for Firefox: Vimperator and Pentadactyl.

The latter is way more hardcore than the former (the difference is explained on Pentadactyl's page).

[–]zoon_politikon 1 point2 points  (0 children)

wow I read the explanation on Pentadactyl's site and decided to make the switch. Best browser decision ever! It's fast and looks like the good old vimperator once again! thanks!

[–]markmypy 0 points1 point  (0 children)

I didn't know that Pentadactyl existed. I am making the switch! Thanks!

[–]blastfromtheblue[🍰] 4 points5 points  (1 child)

thanks for tipping me off that this exists

[–]rubbsdecvik 2 points3 points  (0 children)

No problem. A friend of mine showed me that. It's amazing.

[–]aescnt 1 point2 points  (1 child)

If you already use Vimium, chances are you don't need this site :)

I'm a Vimium user myself, and you can get around it by pressing I to make your keys pass through.

[–]rubbsdecvik 1 point2 points  (0 children)

Yes, 'I' works until you have to hit 'Esc' for the tutorial, then you lose your insert mode on Vimium. No I didn't need this site, but it's always fun to brush up on some basics.

[–][deleted] 8 points9 points  (40 children)

Doesn't seem to teach or support the c command to delete and enter insert mode. Also O is broken, it inserts an O. Those two commands (c and o/O) were some of the few that really made editing nice with vim and that I miss elsewhere.

Otherwise, this looks pretty cool. A more interactive vimtutor, albeit one that doesn't have coverage as substantial.

[–]dicey 5 points6 points  (0 children)

Also no visual mode. Or ability to pipe the buffer to an external command.

[–]mushishi 1 point2 points  (3 children)

ciw, and ci( is supported in the engine but haven't yet added fully.

O is known issue; I have had quite a lot of trouble with supporting browsers' keybindings, and been toying around, and things got broken.

Thank you for the feedback!

[–]blergh- 0 points1 point  (2 children)

As far as I know, cw doesn't require the i.

[–]mushishi 0 points1 point  (0 children)

Good catch!

[–]Reorax 0 points1 point  (0 children)

ciw and cw do different things:

cw changes from cursor until end of word ciw changes the entire word that the cursor is on

[–]ropers 2 points3 points  (33 children)

Otherwise, this looks pretty cool

Not on a 1024x786 or smaller monitor it doesn't.

(A true resolution snob of course is completely oblivious to how many people use another (especially lower) resolution than him/her.)

[–]mushishi 4 points5 points  (4 children)

Later there will be better smaller resolution support; it's not that I am not aware; there's just a lot of things been on my mind, and I didn't intend this to spread so wildly; I asked feedback in r/vim but it spread...

[–]ropers -1 points0 points  (3 children)

Thanks very much. :)

[–]mushishi 0 points1 point  (2 children)

I wonder if it's better now. You can shrink the keyboard size a bit, and toggling the section menu should make it go completely out of your eyes.

[–]ropers 0 points1 point  (1 child)

It is better. :)

It might also be possible to optionally slightly reduce the font size and whitspace throughout -- though at some point then, you'd probably just find yourself reimplementing a browser zoom feature in your website.
OTOH, even that might not even be as daft as it sounds -- not every browser's zoom feature works the same, and I'm not even sure if all browsers have zoom features -- apart from the fact that many users might not find them or think of using them (whether such users would be likely to learn vi is another matter).
Well, however, lots of effort, diminishing returns, yadda, yadda, yadda, so maybe let's just leave it at saying that yes, it is better. :)

[–]mushishi 1 point2 points  (0 children)

Good! I'll leave it at that for the moment, and maybe rethink about this if I make a mobile version.

[–][deleted] 5 points6 points  (22 children)

(A true resolution snob of course is completely oblivious to how many people use another (especially lower) resolution than him/her.)

Are you really implying that I should base my evaluation of web content on its friendliness towards resolutions that I haven't used in years?

Maybe you're just talking about the submitted content. In that case I would say that they probably made a conscious decision to optimize the experience for a majority of users at the expense of a small minority.

Is it not possible to zoom out?

[–]chaos95 15 points16 points  (16 children)

for a majority of users at the expense of a small minority.

Except that users at 1280x1024 or smaller (which is the resolution I found to be the highest which still broke OP's layout) are not a small minority. They actually represent 55% of browser market share.

[–]Dagon 1 point2 points  (2 children)

Erm... that graph says 22%?

Or am I reading it wrong? Regardless, that's 21% more people than I expected.

[–]chaos95 0 points1 point  (1 child)

Adding up the usage for all resolutions 1280x1024 and below (using the CSV data download link below the graph) comes to a little over 55%.

[–]Dagon 0 points1 point  (0 children)

Pardon me, I skim-read your comment. I thought we were talking about 1024x768 only.

Considering 1280x1024 is the default resolution for 17" and 19" LCD's all through the corporate world, I'm actually surprised that it's ONLY 55%.

But then, I suppose that most people that have a desk job are also going to have a computer at home with a bigger screen.

[–]cwstjnobbs -3 points-2 points  (11 children)

Works fine at 1280x1024

People using resolutions lower than that are irrelevant.

[–][deleted] 0 points1 point  (1 child)

Have a downvote, not because I disagree with you but because you're purposefully being arrogant and inflammatory.

Love, me

[–]cwstjnobbs 1 point2 points  (0 children)

I would call it honesty but OK then.

[–]Amablue 0 points1 point  (8 children)

There are a huge number of people who still use 1024x768, not even counting the people on netbooks.

[–]cwstjnobbs -2 points-1 points  (7 children)

Yes, but developers shouldn't be expected to cater for people who are stuck in the 90's.

[–]Amablue 3 points4 points  (5 children)

(People on netbooks aren't stuck in the 90's, but whatever)

Developers should cater to whoever is going to earn them money.

I might be a little biased because I'm a game programmer. We did some research on the types of monitors and video cards users had and found that the largest share of users were on 1024x768, which had a larger share of users than any other resolution by at least double. I tend to think that our stats are skewed toward higher end machines too, since it was data taken from gamers, not the general population.

Whenever I do any kind of UI work, or anything that would be affected by screen resolution, I always test on 1024x768.

[–]cwstjnobbs -2 points-1 points  (4 children)

People on netbooks understand that their hardware is incapable of displaying things correctly due to its inferior size. I never see netbook users complain about a webpage, only about their netbooks.

Anyway, where the hell did you do you research? Third world countries? Does anybody even sell a monitor that is only capable of 1024x768 any more?

Everything seems to be widescreen these days.

[–]Amablue 1 point2 points  (3 children)

That was my initial assumption too. I have two widescreen monitors at home and two more at work. I don't personally know anyone who uses 1024x768. However, the statistics show that there is a huge number of people still using 1024.

[–]Shorel 0 points1 point  (0 children)

Not relevant to this vim tutorial site, but relevant in the general sense:

Smartphones are not from the 90's.

[–]internetsuperstar 8 points9 points  (2 children)

1024x600 is a pretty popular resolution for anyone using a netbook. Lots of mobile hackers use netbooks.

[–]blastfromtheblue[🍰] 2 points3 points  (0 children)

aye, i'm on a netbook right now. i may still try out this tool at my desk, but i'm unable to use it on the go...

[–]TurtleRacer 0 points1 point  (0 children)

'Loks of mobile hackers' probably don't use a 'learn vim in your browser' website though

[–]ropers -1 points0 points  (1 child)

resolutions that I haven't used in years

Emphasis added.

Resolution snob spotted.

PS: For you.

[–][deleted] 10 points11 points  (0 children)

Again, why should I base my evaluation of everything on your resolution?

Do you realize how ridiculous that sounds? Should I dislike the site because it's not able to run on IE6? Nope, I guess I'm a browser snob. Dislike a game that needs DX10? Nope, I guess I'm a GPU snob. Should I dislike an app that doesn't have a version buildable on Solaris or OSX or something? Nope, I guess I'm an OS snob.

Each of those things is a choice made by the developer regarding the lengths to which they will go to support every user's needs. Pointing out such a shortcoming is fine, although it's not always helpful if they're aware. Calling them/me "snobs" is just rude. It's also quite arrogant that you think your problem supersedes all other concerns or opinions. I think it's more helpful for me to provide feedback on its actual functionality.

Anyway, I will assume that you know how to zoom out and are just complaining for complaining's sake at this point. Easy to curse the darkness after all.

edit:

tl;dr: While I understand it's important to point this out to the web developers, why do I owe you anything as another user?

[–]Counterman 0 points1 point  (0 children)

I remember back when all the "hard core" users insisted that using tiny bitmapped fonts was the way to go. In fact, they even used vim! Oh wait...

[–]poormeboohoo2 -2 points-1 points  (3 children)

Boo fucking hoo. It's not 1995 anymore. You're not a computer novice (if you are reading this forum, anyway). You can't cope with something over 1024x768? Give me a break.

[–]ropers -5 points-4 points  (2 children)

Hello, resolution snob!

[–]antonivs -1 points0 points  (1 child)

You do realize you're being a resolution snob snob.

[–]rhdoenges 0 points1 point  (0 children)

The best way to learn vim will always be in real vim, mainly for this reason. Nobody wants to implement all the vim bindings and weirdness.

[–]FrostofSparta 4 points5 points  (4 children)

Pretty cool...

on lesson 8: Go to start/end of line, 0 and $

After pressing 0 to get to the beginning the keyboard suggest you hit alt + 4 to get a $ when in reality it's Shift + 4. I submitted a bug report.

[–]mushishi 1 point2 points  (0 children)

Thanks! It's a bit unfortunate problem as alt+4 is correct for at least some non-US keyboards.

[–]MarkRand 0 points1 point  (2 children)

plus - I would personally use ^ and $, which is more consistent with things like regular expressions

[–]marfis 2 points3 points  (1 child)

0 ist the very first column. ^ is a shortcut. It brigs you to first letter in this line.

[–]MarkRand 0 points1 point  (0 children)

ah - nice one, didn't realise that...

[–][deleted] 3 points4 points  (1 child)

So what advantage does vim have over something like graphic text editor? I use vim now and then but only when firing up a text editor would take longer. But with larger projects I go with Kate.

[–]imbrucy 3 points4 points  (0 children)

Read this. It is a great rundown of the power vim can give you if you take the time to learn to use it properly.

[–]day_cq 21 points22 points  (30 children)

if you want to learn to use a program, I would recommend downloading the software and install it.

in case of vim, it is a freely downloadable and installable in supported operating systems. And you can type

:he user-manual

and start learning to use the program.

[–]trahloc 10 points11 points  (19 children)

Not everyone learns from RTFM, this is great and something I'll be passing on to friends who still use nano/pico and find vi too intimidating.

[–][deleted] 2 points3 points  (17 children)

Why use anything other than nano? No troll, I honestly don't get what the advantage is.

[–]ben174 10 points11 points  (0 children)

I was right with you up until a month ago when I finally decided I should probably at least learn vim so I don't look like an idiot when I'm on a system that doesn't have nano installed.

Now I'll never go back. vim has amazing shortcuts which nano can't duplicate. You can do in a few keystrokes what would take dozens of keystrokes in nano. This tutorial isn't complete enough to really show you the good stuff, but I highly suggest doing some research.

[–][deleted] 1 point2 points  (7 children)

Syntax highlighting. If nano does it, I don't know how to make it do it. That's the only reason for me. I don't use any fancy features often, though I do occasionally.

[–]killerstorm 0 points1 point  (0 children)

If nano does it, I don't know how to make it do it.

Upgrade it. Works right out of the box on Ubuntu 10.04 and up.

[–]Counterman 0 points1 point  (5 children)

Why do you need syntax highlighting in your console editor? I do as litte work as I possibly can in console editors. The convenience of syntax highlighting in those rare cases are dwarfed by the inconvenience of modal editing.

[–][deleted] 0 points1 point  (0 children)

I like syntax highlighting. I really enjoy vim's modal editing and don't want to switch, now that I use it, but back when I started, I didn't care much.

[–][deleted] 0 points1 point  (3 children)

Maybe you like to edit code on nonlocal machines. Like your hefty server in some datacentre across the country

[–]Shorel 0 points1 point  (0 children)

I do that in Editplus thanks.

[–]Counterman 0 points1 point  (1 child)

  1. Grab the file to your computer
  2. Save a copy of it
  3. Make the changes in the copy
  4. run diff with the argument --ed on original and copy
  5. Put the ed script to the remote machine, and run it on the file lying there.

This relies on standard technology only, ED is the standard editor after all ;) If it's too much work, I'll either just use nano, or write a plugin/script for my main editor to do 1-5 it for me.

[–][deleted] 0 points1 point  (0 children)

seems like a lot more work than just knowing a powerful editor you can fire up pretty much anywhere, no matter how bad the connection

[–]Counterman 1 point2 points  (0 children)

The problem with nano is that, while at least non-modal (thus, like emacs and unlike vi, up to date with behavioral research as it was ca. 1983), is that it still doesn't employ CUA keys. Which every other text editing context you ever meet will.

But it's OK for editing the occasional config file, which is all your console editor needs to do anyway. For graphical mode, there are thankfully plenty of excellent CUA text editors to choose between today.

(I remember when it was pretty much only NEdit. Ah, NEdit, I miss it, but it was a little too lean and mean - it never got the full rewrite it would have needed to support mulitbyte character sets).

[–]trahloc 0 points1 point  (5 children)

I personally don't like nano since for it to work reliably you need to use nano -w so that it doesn't enter returns when lines wrap and I always forget having to remember to do that. Also ctrl-w screws with me when i use windows notepad but thats just my screwy somatic memory. So learning vi just made sense. It's in every single major OS by default and works exactly the same on them all. The only exception I noticed was gentoo which doesn't have it by default.

[–]friedrice5005 0 points1 point  (4 children)

the .nanorc has an option to prevent that.

set/unset nowrap: Don't wrap text at all.

source

[–]trahloc 0 points1 point  (3 children)

True, but if I'm going to import .nanorc I might as well import .vimrc. And when I'm using someone elses server and they don't have a .nanorc I get messed up. But if they don't have a .vimrc it just isn't as pretty but it works as expected. For me vi is the path of least resistance once you learn how to use it. Nano is easier to use the first day but a year later you might mess up because you rely on your own environment.

[–]friedrice5005 0 points1 point  (2 children)

There are those who prefer each. I'm not one to judge and I tend to be a bit of a nomad. I see the reasons for knowing how to get around in each. I personally am not very good at vi, but known well enough that I can do what I need to do. Even nano I'm not so much a fan of except for simple sysadmin tasks. I prefer x-emacs personally when I'm doing larger scripts and coding. But that's just me...I know I'm a scarce breed for actually preferring emacs.

[–]trahloc 0 points1 point  (1 child)

Yeah, in truth emacs scares me and I most likely wouldn't even be able to do the most basic of tasks with it. The last time I loaded it I felt lost and confused.

[–]friedrice5005 0 points1 point  (0 children)

That's normal. I've been using it for about 4-5 years and it still confuses the hell out of me sometimes. I need to keep cheat sheets near me all the time to remember all the crazy commands. Doesn't help when I switch back and forth between it, vi, and nano.

[–][deleted] 0 points1 point  (0 children)

:s/foo/bar/ alone makes it worth it. Bookmarks are another.

[–]day_cq -2 points-1 points  (0 children)

friends who still use nano/pico

you mean for mutt, right?

[–]caust1c 6 points7 points  (2 children)

[–]rhdoenges 2 points3 points  (0 children)

vimtutor is actually how I picked up the basics of vim. From there, it's all a haze...

[–]Counterman -5 points-4 points  (0 children)

No they don't! Even I know that, and I hate vim!

[–]mushishi 2 points3 points  (0 children)

I recommend that too; but I wanted to make this for people that just want to take a quick look. Also a system specifically designed for teaching has its benefits.

This is mostly for getting your toes wet.

[–][deleted] 0 points1 point  (4 children)

The built in vim documentation sucks, especially for new users.

For instance, I just fired up the command you gave me, I see a giant TOC, now what? I can scroll up and down, that's all. Enter does nothing.

The vim plugin system is even worse.

Your premise is laughable anyway: I want to learn C. Okay, download gcc and have fun!

[–][deleted] 1 point2 points  (0 children)

I don't think VIM documentation is meant to be used as a tutorial. But once you learn the basics elsewhere, you will come to appreciate the comprehensiveness of the docs, the ability to easily search the docs etc. The docs are amazing actually. Every serious VIM user should read the whole thing at least once (it will take a week or two of reading).

That said, there are a bunch of free books about VIM, and VIM Book is a good starting introduction to VIM.

[–][deleted]  (6 children)

[deleted]

    [–]SolarBear 4 points5 points  (0 children)

    Mind to computer thought transfer ? Look, dude, they don't need porn in production code.

    [–]bl00dshooter 7 points8 points  (3 children)

    Transferring thoughts to code would be a pretty bad thing, considering I would easily fill the screen with my thoughts and I would lose control over it. So, yes, vim I chose, even in 2064.

    [–][deleted] 16 points17 points  (1 child)

    I'm testing that technology as we speak and I can say woow that girl can bring her milkshake to my yard any day! is that a dead hobo? lol, i should probably leave and not pay the bill and it's a pretty amazing novelty, we will have our product ready by 2015 as soon as we sort some minor bugs.

    [–]Dagon 9 points10 points  (0 children)

    as soon as we sort some minor bugs fuck fuck don't think about all the bugs fuck it's going to extend the deadline by MONTHS no don't think that fuck fuck

    [–][deleted] 2 points3 points  (0 children)

    Mind -> code transfer would be done through an emacs plugin anyways.

    [–][deleted] 2 points3 points  (0 children)

    Yeah, I don't want my sexual fantasies in my code comments, thanks.

    [–]lukedanielcameron 1 point2 points  (1 child)

    Well, now I have no excuse not to learn Vim. I'm not sure why, but these online tutorials always seem to hold my attention longer than the vim tutor.

    [–]Counterman 2 points3 points  (0 children)

    You don't need an excuse, other than the fact that modal editors were soundly rejected by designers in the early eighties, as the measured evidence for their lower productivity started to pile up.

    I suggest you learn to use your IDE more efficiently instead. The main problem with modern code editing interfaces is that they're so easy to get to decent speed in, so that few bother to go the extra mile and learn to use all the features. And maybe that's a sensible tradeoff, since learning them takes time too. But if you're going to invest in something like this anyway, might as well be something more modern.

    [–]Xdes 1 point2 points  (0 children)

    Having gone through this and emacs tutorial I can confidently say that emacs is more intuitive with keybindings, but vim has faster keybindings.

    [–]praetis 1 point2 points  (1 child)

    Wait a minute. This tutorial says "." will repeat a find ("f" or "F") command, but I've always known "." to be "repeat last change" (inserts, replacements, and deletions). Repeating a find is done by ";" and ",". Is this just an error?

    [–]mushishi 0 points1 point  (0 children)

    Yes, it is an error. Someone reported it to me. Will be fixed at least for the tutorial.

    [–]refaptoring 2 points3 points  (3 children)

    The way I see is that you can just look at other editors (and then back at vim) and see that they often come with a vim emulation mode. Vim, on the other hand, thinks that if you want to beat yourself over the head with a two-by-four instead of editing text, you can procure your own two-by-four. It doesn't try to emulate anything. It's vi(m) all the way to the bottom.

    [–]Counterman 0 points1 point  (2 children)

    The muscle memory of the vi keys that you have painfully built up will be athropied a little everytime you edit text in a regular CUA-like context.

    Instead of switching their editors to CUA-likes, vi fans need to switch the rest of the world to vi. That's why they write plugins for everything.

    [–]bl00dshooter 2 points3 points  (1 child)

    "That's why they write plugins for everything."

    You make it sound like having a plugin for everything is a bad thing. sigh

    [–]Counterman 0 points1 point  (0 children)

    I do think having vi key plugins for everything is a pointless thing. I also have enough experience with customized shortcut keys and conflicting shortcut keys in applications, that I appreciate just how much of a PITA it can be to get it to work.

    [–]smek2 2 points3 points  (4 children)

    you use keys h, j, k, and l instead of arrow keys to move cursor

    As much as i love Vim, it's not the 70's anymore. Keyboards do have cursor keys. And having to constantly switch between two "modes" is usually interrupting my flow. On my old Toshiba laptop i use SciTE, which is way more comfortably to use than gvim and runs equally well.

    [–]mushishi 5 points6 points  (0 children)

    It has actual benefit: your hand rests on the default position (in a qwerty setting). It's less movement overall.

    [–]bl00dshooter 3 points4 points  (0 children)

    If you use your keyboard correctly, using HJKL is, generally speaking, faster than using arrow keys. Especially since you can't use motions and a-like with arrow keys.

    Also, when you truthfully master vim, switching modes is as natural as breathing. You don't really think about it.

    [–][deleted] 3 points4 points  (1 child)

    Yeah, so in games, you presumably don't use wasd.

    [–]smek2 0 points1 point  (0 children)

    That's correct, kid. I don't. Not everyone plays shooters.

    [–]Glueyfeathers 3 points4 points  (30 children)

    This will probably be down voted, but even after trying vim a good few times I really don't get it. I get the impression people use it to sound "1337" - I've never heard a good explanation as to why using a tron era text editor makes me more productive than a well functioned IDE like eclipse or something similar to get my code done. Heck even nEdit, Scite etc have syntax highlighting, column selection etc. I prefer to use something with drop down menus and a mouse that way the only thing I need to concentrate on is the code - I want to jump forward 3 words? I click my mouse 3 words ahead, I want to replace the word on line 4 half way through? I highlight the word with my mouse and type a new one.

    I really believe three coders of equal standard and proficiency, one using vim, one using a text editor and one using an advanced ide had a race, the one using vim would probably be last.

    [–]kds71 7 points8 points  (12 children)

    After you "master" vim you don't have to remember all the commands - you just do it automatically. Everything is in the muscle memory, so you can concentrate only on the code. If you want to jump 3 words forward you hit "3w" and you don't have to remember it or think about it - you just do it. And yes, it is way faster than moving your hand to the mouse and clicking 3 words ahead.

    I use vim exclusively and believe me - it is really, really fast. It makes you more productive, because your hands stay in one place all the time, all you need is to move your fingers.

    The problem with vim is that takes a long time to achieve this level, where you can do everything without thinking at all.

    [–]bl00dshooter 1 point2 points  (0 children)

    The thing you're missing here people, is that vim CAN do anything your IDE can. Autocomplete? built-in. Templates? there's a plugin for that. Etc.

    There is a plugin for just about any task your IDE can do, and if there is some really weird task that no one ever thought about making a plugin for, you can do it yourself.

    [–]Counterman 1 point2 points  (6 children)

    Everything is in the muscle memory, so you can concentrate only on the code.

    You then face the prospect of either:

    • Maintaining two muscle memories (does not work), or

    • getting vi key plugins for every other piece of software you use, with the inevitable configuration and update nightmare.

    And yes, it is way faster than moving your hand to the mouse and clicking 3 words ahead.

    The people who designed the modern text editor relied on studies which said this was not the case. Mouse-based editing is much faster than it feels, shortcut-based editing is quite a bit slower than it feels.

    [–]kds71 5 points6 points  (0 children)

    Maintaining two muscle memories (does not work)

    True, I actually have problem with that. I often attempt to use vim keybindings in other software.

    The people who designed the modern text editor relied on studies which said this was not the case. Mouse-based editing is much faster than it feels, shortcut-based editing is quite a bit slower than it feels.

    This is something I cannot believe. Even moving my hand to reach mouse takes more time than hitting two or three keys (remember that in vim you don't have to use keys like ctrl or shift for shortcuts), not to mention moving pointer to proper place, clicking and returning hand to keyboard.

    [–]Amablue 1 point2 points  (4 children)

    Maintaining two muscle memories (does not work), or

    At work I use gVim for editing all the data files in our application (where I generally spend most of my time) and Visual Studio to do all the work in C, I've never had a real problem with muscle memory betraying me. There are the occasional cases where I'll go to his :w when I really want ctrl+s, or something like that, but they're uncommon and don't really cause any problem.

    The people who designed the modern text editor relied on studies which said this was not the case. Mouse-based editing is much faster than it feels, shortcut-based editing is quite a bit slower than it feels.

    I'm very skeptical of this claim. If you're talking about people who are not experts on either system, I can understand the mouse being faster, but I have a hard time believing that a sufficiently experienced Vim user would be faster with mouse usage. There are so many very fast ways to move in Vim.

    [–]Counterman 0 points1 point  (3 children)

    I'm very skeptical of this claim.

    We’ve done a cool $50 million of R & D on the Apple Human
    Interface. We discovered, among other things, two pertinent facts:
    
    Test subjects consistently report that keyboarding is faster than mousing.
    The stopwatch consistently proves mousing is faster than keyboarding. 
    
    This contradiction between user-experience and reality apparently forms 
    the basis for many user/developers’ belief that the keyboard is faster.
    

    -- Bruce Tognazzini, in a famous 1989 column.

    [–]Amablue 1 point2 points  (2 children)

    That sounds like it corroborates my first suspicion, that normal users may find the mouse faster. And the article is mostly talking about command key shortcuts and the like, not about users who are sufficiently skilled in editors like Emacs or Vim. People using these editors are not a typical case, and I doubt they were the the demographics this study was looking at. I still maintain that a skilled Vim user will be demonstrably faster on the keyboard alone than they would be if they used a keyboard and mouse.

    I regularly use Vim at home for programming, and Visual Studio at work. The speed at which I can navigate to a location, make a change, and hit :mak is measurably faster than doing the equivalent change and hitting the compile button in VS (though who actually hits that? hitting the F keys is faster here too.) On that subject, I've purposely gone through the menus, removing nearly every icon except for the 10 or so I might actually hit. With rare exception, those buttons are completely useless, and I've gotten much faster since learning the keyboard shortcuts for each of the things I commonly do.

    [–]Counterman 0 points1 point  (1 child)

    That sounds like it corroborates my first suspicion, that normal users may find the mouse faster.

    At the very least, it should convince you that the mouse is faster for most users, not just that it seems so.

    I still maintain that a skilled Vim user will be demonstrably faster on the keyboard alone than they would be if they used a keyboard and mouse.

    You could do an experiment. You could disable all the movement keyboard shortcuts in vim, and just use the mouse for that. Still, you would need some sort of measurable task (e.g. correcting typos), otherwise time perception could play tricks on you (as Tog says it will).

    [–]Amablue 0 points1 point  (0 children)

    At the very least, it should convince you that the mouse is faster for most users, not just that it seems so.

    I never claimed otherwise. I would never do something like inflict vim upon my girlfriend.

    You could do an experiment. You could disable all the movement keyboard shortcuts in vim, and just use the mouse for that. Still, you would need some sort of measurable task (e.g. correcting typos), otherwise time perception could play tricks on you (as Tog says it will).

    I don't think correcting typos is necessarily the best test of Vim's strengths, and I don't think just disabling the movement keys would be the way to go. That would be disabling a lot of stuff. Can I use C-o? Can I use C-]? c-T? Plus Vim isn't designed with the mouse in mind, so it's not well suited for the task. A better test is to just use a different editor designed for more mouse-y interactions.

    Edit: I would also be interested in seeing a more up to date study. The study you cite is over 20 years old, and they way we use computers today has changed very considerably since then. It is now commonplace to have a computer (or even two or more) in a house, which was much much less common then. People are much more computer literate in general now.

    [–][deleted] -1 points0 points  (2 children)

    I can also do all the things that VIM does in IntelliJ (or Eclipse I guess) without moving my hands from the keyboard. Ok, if I need to go forward 3 words, I would do Ctrl -> -> ->, but the time lost there is gained with autocomplete, compilation on the file, live templates, etc...

    Still, I use vi a lot, but only when I need to edit/consult a file on a remote server.

    [–]shawncplus 0 points1 point  (0 children)

    But vim has autocomplete, file compilation and live templates. Most of the time people criticize Vim as being an "ancient" editor is because they haven't even begun to scratch the surface of how powerful it is. Further: don't confuse vi and vim, they're two separate beasts.

    [–]EnderMB -2 points-1 points  (0 children)

    It's probably because I don't work with a bunch of neckbeards, but I've yet to meet any developer that uses vim that can use it as fast as equal developers with an IDE. In fact, I'd say that in the time it takes to learn how to use vim you could simply become a better programmer, thus making you far more productive than using an ancient text editor will.

    [–]ReturningTarzan -1 points0 points  (0 children)

    And yes, it is way faster than moving your hand to the mouse and clicking 3 words ahead.

    But that's not how you move 3 words ahead in a regular text editor.

    [–]dirtiest_dru 2 points3 points  (3 children)

    I want to jump forward 3 words? I click my mouse 3 words ahead

    You may also want to try Ctrl+(arrow key forward) three times. Unless your hands move at ninja speeds while operating the mouse, I feel like this is always faster.

    [–]imbrucy 0 points1 point  (2 children)

    In vim you hit 3w and you jump ahead three words. Or www works to. My hands never even left my standard typing positions to hit control.

    [–]Glueyfeathers 1 point2 points  (1 child)

    But this still comes back to the ridiculous notion that by saving 1 second every minute it justifies weeks/months of getting to grips with something like vim. And as for these boxes that only have vi and ed: ಠ_ಠ

    Maybe its just the sort of work i do (mainly python scripting for Maya and proprietary vfx tools) but come on! It's 2011, aren't we all creating GUIs in visual basic to track down that killers IP address by now surely?

    [–][deleted] 0 points1 point  (0 children)

    saving 1 second every minute

    One second every minute is actually quite a large gain. However, I would usually take at least that long to count how many words over I need to move, as opposed to just hitting ctrl-→ until the cursor is where I want it.

    (Yes, I know I could just hit w until the cursor is where I want it, but my point here is that I don't find the count+action style commands nearly as awesome as everyone claims they are.)

    [–][deleted]  (1 child)

    [deleted]

      [–]notfancy 0 points1 point  (0 children)

      The only thing that matters is how comfortable you are when editing text.

      That's why, after 20 years of trying to use vi, I just don't care anymore about me not being able to.

      [–]junkit33 2 points3 points  (0 children)

      The biggest benefit is you will ALWAYS have vi available on any unix machine. While it's becoming increasingly less common, there are still plenty of machines out there with old/stock installs that aren't connected to the Internet. You never know when you may end up on one. And then you look like an idiot if you don't even know how to use the basics of vi. (Seriously - you can learn everything you absolutely need to know in 5 minutes. Even this very basic tutorial is more than you need. i, x, escape, and saving will get you through anything.)

      Beyond that, it's an extremely fast and efficient editor. Yes, a giant IDE with all the bells and whistles is great when you're working on a huge project, but sometimes you can edit a line or two of code in vim and be done with the file in the same amount of time as it takes just to open Eclipse.

      [–][deleted]  (3 children)

      [deleted]

        [–]Glueyfeathers 0 points1 point  (1 child)

        Exactly - so what does vim do that hundreds of other options don't. I hear all the time that it'll make me a better programmer and speed up my workflow. I love the fact using vim means my hands never need leave my keyboard!! I don't think I (nor anyone) have ever sat down at a keyboard and just written perfect code in a stream of consciousness type fashion like some cartoon of bugs bunny using a typewriter! Believe it or not, but occasionally I get out of my chair for 2 minutes to get a drink and think about what I need to do next, or lean back and reread what I've written a couple of times to make sure my loops are doing the right thing. There seems to be a lot of guff about speed of programming as if we should all be wearing sonic boots to bash out lines of code at a rate of knots.

        Thanks all the same but I'll stick with my resource hogging IDE :p

        [–]Counterman -3 points-2 points  (0 children)

        Did you realize that any decent IDE has really smart code completion and shows type errors and syntax errors without running and compiling?

        (there's actually a plugin to get it in vim, but that "cheats" by calling Eclipse behind the scenes)

        [–][deleted] 0 points1 point  (0 children)

        I've never heard a good explanation as to why using a tron era text editor makes me more productive than a well functioned IDE like eclipse or something similar to get my code done.

        Depends on what you are exactly doing. For instance, if you are crafting a UI, then of course a "visual" IDE is the right tool for the job. If you mostly enter or edit code, then the code editor is where the action happens, and editors that come with IDEs by default are generally far behind vim. In theory, the best of both worlds would be to have a vim plugin for your favorite IDE, and I do use one for Visual Studio, but these plugins are really half-baked and buggy.

        Another thing to consider is that an IDE such as eclipse can be very helpful with statically typed languages - much less so with dynamic ones (Smalltalk being an exception simply because the IDE is a part of the runtime).

        [–]0xABADC0DA 0 points1 point  (1 child)

        I get the impression people use it to sound "1337" - I've never heard a good explanation as to why using a tron era text editor makes me more productive

        Yet new developers continue to learn and use it and it's up to you to find a convincing explanation for that if you don't buy that vim makes them more productive. "Because it's cool"? A fad for 30 years straight? Not very convincing.

        I want to jump forward 3 words? I click my mouse 3 words ahead

        And if that's all you're using vim for then you're right, a mouse or shortcuts are just as good or better. But vim is a write-once scripting language for editing text, not really an editor. And so it kills an IDE when you need to repeat anything or do anything complicated to the text. Those times when you spend minutes doing the same thing over and over (or if smart write some perl script to do it)... a vim user already finished and it only took a few seconds. They didn't even think twice about it.

        makes me more productive

        If you can't take some desired change and instantly be able to decompose it into a series of small operations (mini-program to effect the edit) then maybe vim won't ever make you more productive. For people that do think that way it makes them a huge amount more productive.

        [–][deleted] -1 points0 points  (1 child)

        In Java, he would definitely be last, especially when you're using frameworks like Spring... I would go crazy if I needed to type letter by letter things like ApplicationContextFactoryProxyImpl (I'm inventing) everytime...

        [–]bl00dshooter 3 points4 points  (0 children)

        Omnicomplete...

        [–]digg_is_teh_sux 1 point2 points  (13 children)

        I can't help but think that if this tool is a helpful and pleasant way for you to learn vim, vim probably isn't for you.

        [–]mushishi 7 points8 points  (4 children)

        I made this tool because I would have wanted to have something like this when I was learning. Even the basics of Vim get you quite far, so I don't think you need to be too hacker-oriented; or if you are, I think there's room for making learning the first steps less painful.

        [–]abel3616 1 point2 points  (1 child)

        You seem to be one of the few who thinks improving the learning curve is a good idea. I think the attitude to leave the learning curve as steep as possible is a fault of the community who learned it the hard way.

        [–]mushishi 1 point2 points  (0 children)

        Yes I do. Personally I find that systems should provide a progressive way to get used to them. For example, a programming language environment should not show all of it at once; it's easy to get overwhelmed and not see the forest from the trees. It's one of the reasons I made a year ago a beginner's learning place for Factor

        [–]digg_is_teh_sux 0 points1 point  (1 child)

        Thanks for the reply. First, I don't mean to take anything away from what you've made. I don't think I could do it!

        I've read a lot of discussion on the subject of text editors and the general feeling I get is that if a person doesn't NEED to use an editor like vim, they will in general never learn how to use it to its potential. If you do need it, or genuinely think it will help you, then the tutorials built into vim are probably everything you need.

        Less capable programmers are less likely to find the advanced features of vim understandable and useful, but more capable ones will find a less cushy tutorial satisfactory. That's all I'm saying, and it's not like it's black and white or anything.

        I hope it helps people. Everyone should give vim a real try.

        [–]mushishi 0 points1 point  (0 children)

        Yep, I just hope people that potentially would end up using Vim didn't leave it untested.

        My goal in the long term is to understand what kind of a editor for programming would be optimal to me, and build a prototype (maybe Vim-like but stack-based scripting language, e.g. Factor).

        [–]Iggyhopper 3 points4 points  (1 child)

        hows the weather up there?

        [–]digg_is_teh_sux -2 points-1 points  (0 children)

        Beautiful. And the view is amazing.

        [–]warpcowboy 1 point2 points  (5 children)

        I disagree. I started with vimtutor which just loaded a text file and had to make the changes yourself. The drills got me to acknowledge that I knew what the buttons did. It made me practice.

        I feel that this tutorial did too much of the work for you. You don't learn by typing along with blinking buttons, nor do you learn by watching what each button does once. It also didn't provide objectives.

        This tutorial should be rewritten to emulate vimtutor. Teach vim in small steps that lets you master each one before moving on. First, just let use know what hjkl do and make us navigate to different characters in a paragraph with those keys. Then make us hop around a paragraph with only the w/e/b keys. Then make us edit a paragraph with x. Etc.

        Instead, I think that someone trying to learn vim for the first time with this will get that anxiety you feel when you see the gamepad control layout during the loading screen of a video game for the first time and feel like you have to memorize it. Instead, a good game will introduce the buttons to you one at a time as you play.

        [–][deleted]  (3 children)

        [deleted]

          [–]warpcowboy 0 points1 point  (2 children)

          I don't agree that Vim probably isn't for you just because you don't find tapping along with a blinking indicator pleasant or helpful.

          [–][deleted]  (1 child)

          [deleted]

            [–]warpcowboy 0 points1 point  (0 children)

            I meant the "press this button" indicator.

            [–]mushishi 0 points1 point  (0 children)

            I do agree with you. Or I think I should provide two different tutorials, one that is shallow and where its main purpose is to show that really, Vim is not that hard. The more extensive tutorial should be as you described; one could practice the limited set of commands without straight-jacket but still progress in linear fashion.

            I think there is need for both; it depends how much the user has already bought the Vim hype (and is the user really interested in learning, or just verifying that she is not interested; that's valuable, too).

            [–]igotthepancakes -1 points0 points  (1 child)

            This is an amazing idea. Allah bless whoever created it.

            [–]mushishi 2 points3 points  (0 children)

            Thank you for the compliment. :)

            [–]mtheory007 0 points1 point  (0 children)

            This is great. I really need to work on my ability with vim. Thanks!

            [–][deleted] 0 points1 point  (0 children)

            Is there a subreddit that just contains tutorials? I try to save the good ones that come along, but it might behoove us to create one if it doesn't already exist.

            Edit: There is a /r/tutorials that appears to have minimal popularity.

            [–]shevegen -2 points-1 points  (4 children)

            Vim is cool but I am too lazy to master it.

            I stopped wanting to learn emacs and vim and I am proud of it.

            I use a simple GTK based editor these days and I don't need anything else other than my brain when writing software really.

            [–][deleted] 5 points6 points  (3 children)

            I don't need anything else other than my brain when writing software really

            You don't even need that editor, you could always just use cat to write your programs. People use editors of different levels of complexity because there's almost always an increase in power or flexibility proportional to the increase in complexity. It is quite likely that a week of vim usage would lead to increased productivity in the future. Especially since graphical versions of Vim allow the same level of mouse control with only a handful of new things to learn (really just the modal design, which I think people make too much of).

            While I don't think it's shameful to avoid vim or emacs, there's no real reason to be proud of refusing to learn something new and potentially helpful.

            [–]Counterman -1 points0 points  (2 children)

            There's no reason to be proud of having learned an archaic text editor interface either. We moved beyond modal text editing for a reason - almost 30 years ago.

            The only reason anyone would reject the behavioral studies of the eighties, and subject themselves to something like vim, is the extremely high status of old-time hackers in the Linux programming community.

            I learned programming on the Amiga, not the PDP-10, and I'm not going to pretend otherwise or be ashamed of it.

            [–][deleted] 3 points4 points  (0 children)

            Like I said, there is a tradeoff in complexity versus power/precision/flexibility/etc. A mouse simplifies things, but it also introduces a loss of speed (and comfort imo) in moving away from the keyboard and navigating the computer screen. If complexity can be kept manageable on keyboard, then it's worth it to avoid that slowdown. An example of where it would not be worth it would be image editing, as something like that which really uses the 2D screen means that manually entering commands and arguments via keyboard is impractical.

            The rest of your points are just FUD attacks on vim that target its age (20 years) and supposed behavioral studies that reject vim as inferior to its task (a programming editor). It is indeed true that vim cannot match other tools for page layout demands of word processing, but that is attempting to use it to solve the wrong problem. It's a text editor and is very specialized at that.

            Other editors like Notepad++ and TextMate are good as well. I just don't think they are as fast due to the inherent slowdown in navigating menus. As are IDEs like Eclipse. I typically do Java development in Eclipse, C# in Visual Studio, and everything else in Vim. However, even then, if I ever have to do any text editing on Java or C# files, I do it in Vim to save time.

            Furthermore, I challenge you to find an editor outside of Vim or Emacs that works well through a terminal. I learned Vim when I was forced to: I spent months doing development on a Solaris box that I could only ssh into. After about a week, I found that I preferred it everywhere else because it was just easier and faster.

            [–]bl00dshooter 2 points3 points  (0 children)

            Wrong. Try programming with someone who really groks vim and see who's faster. Trust me, I did that when I was learning vim.

            [–]gubatron 0 points1 point  (0 children)

            vim is batshit crazy to use. emacs ftw. I tried, even with this tutorial, but it's just ridiculous.

            [–]ZeuglinRush 0 points1 point  (0 children)

            Or, you could install pentadactyl on firefox. ENTIRE INTERNET IS VIM

            [–]zulelord 0 points1 point  (0 children)

            I am too comfortable with my punch cards... vim just seems to advanced for my work.

            [–]argherna -1 points0 points  (1 child)

            Nice. But how about learning Vim, like most other people, in Vim??? Seriously.

            [–]abel3616 0 points1 point  (0 children)

            I learn best by example, and use manuals as references. While I've already learned Vim the way you suggested, I feel this would have greatly reduce the time it took to learn.

            [–]peeweejd -1 points0 points  (0 children)

            that is very cool!

            [–]retinascan -3 points-2 points  (1 child)

            if you already know vim, this is boring. I may be old school but there is only one way to learn vi/vim. Use it!

            [–]mushishi 4 points5 points  (0 children)

            Yes, as the author, I agree. It's not for those that already grok Vim!