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

I think, because you're used to it, you're under-estimating the cognitive overhead of using the mouse. It also sounds like you've bought into some of the worst kind of vim evangelism, the kind that says effective vim users never hit j repeatedly to move between lines. Granted, it's not the best, but if you're moving only ten lines, V followed by repeated j takes basically no thought to create the selection. If it really bothers you, v followed by / will extend a selection to the match. I find that I mostly use / and ? to move around. In that context, setting hlsearch and incsearch might be helpful.

You might also want to use code folding, especially if moving blocks of code around is something you do a lot of. If you delete a fold in vim, the whole fold goes into the paste buffer.



What's the cognitive overhead? I'm a huge vim weenie and a pretty fast typist, but I'd never argue that the mouse is obsolete when compared to vim.

For example, I've played FPS games where I had to target something the size of < 10 pixels, in less than a second, and the need to move my mouse from one end of the mouse pad to the other. Basically, the mouse and (in most cases) cursor are barely separate from my body when it comes to pointing at things on the screen.

So when I need to put the cursor somewhere, I still find that using the mouse can be much faster than any vim key combination.

While I do agree that the 'context switch' from keyboard to mouse matters, I still find using a mouse/trackpad worth the relative effort often enough that 'pure' keyboard vim is a degradation in experience.


I don't think the mouse is obsolete, just that it's an obstruction when it comes to editing text. Vim, emacs, and my current favorite, kakoune, all give you a rich language for talking to the computer about how you want your text to be arranged. The mouse doesn't speak that language. It requires you to switch from thinking about text as text to thinking about it as a pixel target. That may only feel natural if you play a lot of FPS games.


While I do agree that when it comes to editing Vim/emacs/kaoune might be superior, I spend a nontrivial amount of my coding time in 'discovery' mode. scrolling, clicking around, and mouse stuff in general is very useful in that case, and in my experience definitely faster than keyboard-only.

I could try and make a nuanced argument of when and where a mouse is preferable to a keyboard, but I think even just scrolling is enough of an argument for me. CTRL-D or whatnot just doesn't do justice to scrolling with a mouse.

Anyways, mostly I'm a fan of Vim and using its approach as much as possible. I just get annoyed when Vim-fans try to argue that a mouse is never better, which honestly I feel is a the argument of a fanatic. I've never come across a remotely good argument as to why a mouse is never the answer, and it always feels like a needlessly 'partisan' type thing.

Keyboards are cool. Mice are cool. Can we all just get along?

EDIT: I got a bit carried away and I do agree more with you than this comment might suggest. I just think 'editing' is not the only thing I do when coding, and for some of that other stuff a mouse is a huge advantage, even in a coding context.


Re: scrolling, in vim you have CTRL-E and CTRL-Y and there must be a way to adjust the scroll step (usually 1) to the scroll step of your mouse wheel (usually like 3) is bound. Can a mouse do 30 scrollings per second (my keyboard input rate)?

Where the scroll wheel makes a difference is when you want to fine tune the scrolling speed, which you can't do with a keyboard. I don't think I have a usecase for that (but YMMV), and my impression is it often gets me out of text mode and into FPS mode.

What would be really nice for larger scroll steps (like CTRL-D) is smooth scrolling. I suppose there is no terminal support for this? Also gvim doesn't seem to have it.

Anyway I usually don't scroll by fixed amounts, but do * (identifier search), / (regex search), { and }, and maybe more.

EDIT: just added this to my vimrc. I don't think my mouse scrolling ever was this good

   " Triple scrolling "speed"
   nnoremap <C-e> 3<C-e>
   nnoremap <C-y> 3<C-y>


you also have ^f ^b (forward, back (by a page)), and ^u ^d (up, down (by half a page)). I honestly prefer scrolling by paragraph though ({ })


> Keyboards are cool. Mice are cool. Can we all just get along?

Agreed.

I'm a vim fanboy - and I use the mouse.


> I do agree more with you than this comment might suggest

Well spoken, that goes for me too. Something about internet discussions amplifies disagreement!


>Vim/emacs/kaoune might be superior

My google-fu is failing me; what is kaoune?


Parent probably meant Kakoune: http://kakoune.org


Indeed I did. Kak is great, especially if you find yourself often using visual mode in vim.


> That may only feel natural if you play a lot of FPS games.

Or almost any kind of PC games. There is learning curve to using a mouse, but it is quite short and once you're over the hump you can use the mouse without thinking about it. The cognitive overhead of the mouse is minimal. There are studies about this: http://www.asktog.com/TOI/toi22KeyboardVMouse2.html


Reaquiring the cursor is an issue for me on systems that "helpfully" make vim mouse (or touchscreen) sensitive.

The cursor's where I left it, damnit. Don't move it and force me to put it back.

There are times when directly pointing to screen elements is useful. Working with text I almost always find it gets in the way


"I've played FPS games where I had to target something the size of < 10 pixels, in less than a second, and the need to move my mouse from one end of the mouse pad to the other."

Do you type with just one hand? Because that's what you'd need to do to replicate that performance while coding.

If you type with both hands, now you have to add in the time it takes you to move one hand from the keyboard to the mouse, make the mouse motion (which could be far across the screen) and then back to the keyboard, repeating that cycle for every single operation which involves the mouse.

Meanwhile, someone who knows vim well and is not reliant on the mouse can type with both hands and only has to move their fingers.


I have my mouse right next to my keyboard (don't most people?). I can grab it about as quickly a I can press a key.


Even if that's true (which is doubtful, as the motion to press a key is much shorter than to move one's arm all the way off a keyboard to the mouse), then you still have the additional time it takes to move the mouse to where it needs to go, and then the time it takes to move your arm back to the keyboard.

There's no way that's going to be as fast. It's also going to be a lot more tiring, if you do that a lot, than merely moving your fingers.


Sure, but you usually have to press a bunch of keys in just the right sequence to do the equivalent with the keyboard.

Some things are quicker to do with the mouse and some things are quicker to do using keyboard shortcuts. I don't understand why people take such absolutist positions on this.

My arm doesn't get tired from moving a few inches to grab the mouse.


"you usually have to press a bunch of keys in just the right sequence to do the equivalent with the keyboard"

Compared to a veteran vim/emacs user, you'd to do a whole ton of mouse movements to get the same effect of a few keystrokes.

"Some things are quicker to do with the mouse and some things are quicker to do using keyboard shortcuts."

The only things I've found to be quicker to do with the mouse are doing things like drawing in Photoshop/GIMP/Inkscape, or interacting with GUI applications which don't have keyboard shortcuts for most of their functions. Text editing and coding, on the other hand, tends to be much faster, sometimes exponentially faster, than the mouse.


>Compared to a veteran vim/emacs user, you'd to do a whole ton of mouse movements to get the same effect of a few keystrokes.

Depends on what you're doing. Again with the absolutism!


This can not be overstated. I haven't seen many GUI type programmers programming in my live, but none of them was faster than "slow". I die of impatience when I watch them edit.


Tog (probably in “Tog on interface”) claims people overestimate the cognitive overhead of the mouse because it is so simple to use, and cites research showing it (including such examples as having to move the mouse over a large screen and back to access a menu item, compared to a keyboard command)

Using the mouse, he claims, is so boring that your mind has time to spend on other things, and that gets perceived as wasting time, while the keyboard continually requires one’s attention, making using the keyboard seem instantaneous

I think that’s why your advice to use repeated j instead of lower keystroke count alternatives is good.

And yes, his research is old (early 1980s) but it wouldn’t surprise me if it held even with die hard vim or meads users. Those keys you press may be close by, but you have to choose between tens of commands every time you issue an editing command.


I've read some of his stuff on this issue, and noticed his experiment design was atrocious, and he has 0 peer-reviewed research. So, I'm taking anything he says with a grain of salt. (I've been doing user research for over 15 years, in a different context, but still I've read tons of HCI/UX work, so I'm not just talking out of my ass here)


By and large, I think vim evangelism is deeply misguided, in that it asks you to learn too many things, it sees golfing your edits down to minimal keystrokes as something other than a total waste of mental energy, it encourages heavy plugin use, and it turns the vimrc into a whole program of its own. The whole point of using an editor like vim is that you don't have to think about it very much. Which is why I encourage using the basic movement and editing keys with reckless abandon. The only thing that justifies learning a new feature is that the simple way is deeply inefficient. Not just less efficient, but so terrible that it's wearing out your fingertips and leaving you annoyed. Global search and replace with regular expressions is a good example. Sooner or later, hitting the letter n and the period key over and over to repeat a replacement is going to get so tiresome that it's worth learning regex, but a novice user can go a long while before doing that and still be quite productive.


I put this in my ~/.xsession

    # keyboard autorepeat delay / rate
    xset r rate 170 30
It's tuned to my personal typing to be just slow enough that I never have accidental ddoublette kkeypresses, but fast enough that I can just hold down 'j' or 'k' in vim to move 10 or 15 lines (and easily hit the target). Using the mouse cannot even come close here (assuming you don't have your hand on it already). 15 lines would be 620ms here technically, so including the human factors it's still comfortably below a second. Really it makes a huge difference. (I saw this first in a talk by Edward Kmett).


> you're under-estimating the cognitive overhead of using the mouse

What "cognitive overhead?" And how is memorizing a bunch of arcane key combinations for cursor movement and region selection not cognitive overhead?

The (imo, dubious) argument against the mouse has always been that there's a strictly mechanical penalty for moving your hands around - not that there's "cognitive overhead."


> What "cognitive overhead?"

Let's break down the cognitive overhead of mouse use. Setting aside the "reaching for the mouse" penalty, there's a lot of work involved in mouse-related tasks like copying a selection:

1. Move your eyes off of the text you're editing so you can find the mouse cursor.

2. Figure out where the mouse cursor is relative to the text you need to edit.

3. Effect that relative movement with your mouse.

4. Highlight the text for copying.

5. ^C or some other key combo to yank the selection.

6. Reorient the mousing hand to the keyboard (find the home row keys again).

Steps 4 and 5 take an equivalent amount of mental effort, but 1-3 and 6 don't exist in vim. That's the cognitive overhead I'm talking about.

> And how is memorizing a bunch of arcane key combinations for cursor movement and region selection not cognitive overhead?

Visual selection is the letter v in vim. There are four keys for basic cursor movement. Then y for yank, d for cut, p for paste. Vim only seems arcane because so many posts about vim are really about demonstrating how smart the author is. I get pretty exercised about this because it's chasing people away who could really benefit from learning vim. Vim is not arcane, vim has a dead simple core with a bunch of entirely optional features on top of it.


> 1. Move your eyes off of the text you're editing so you can find the mouse cursor.

Try this: keep your eyes fixed on a character, then wiggle the mouse or trackpad. I don't think I ever actively look for the pointer before using the mouse, and I doubt anyone else does either.

I'm guessing that if you can track the mouse pointer without taking your eyes off the text you're editing, most of your listed steps become non-factors.




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

Search: