News for hackers. Stuff that matters.
Re:Emacs and Vim by bastih on Friday July 25, 2014 @06:49AM (#8084544)
But that means your fingers have leave home row! :(
Re:Emacs and Vim by asuffield on Friday July 25, 2014 @07:24AM (#8084656)
Thankfully I am blessed with the ability to move my forearms.

I've heard a lot of people talk about keeping their fingers on the home row, and I more or less do that when I'm typing text like this, but for general navigation? I've sat next to a number of people who do it, and I get around my editor faster than they do. Based on this anecdotal evidence, I don't think moving my hand a short distance to reach another key is a significant speed cost.

Re:Emacs and Vim by jimm on Friday July 25, 2014 @08:52AM (#8084897)
Then how do you move multiple lines at a time (4, 16, 64, 256)? To move 16 lines down, I press C-u C-u C-n (of course, the control key stays down the whole time). You either have to press C-u C-u then move your forearm to the arrow key and press down, or press the arrow key 16 times.

(Each C-u is a power of 4. You can specify any number by typing it after the C-u, for example C-u 100 C-n to move down 100 lines.)

Re:Emacs and Vim by asuffield on Friday July 25, 2014 @09:19AM (#8085005)
I cannot recall the last time I wanted to move 16 lines - that would imply I stopped to count the lines. What I invariably want to do is "move down one paragraph" (C-down) or "move to that spot I can see on the screen" (1-6 lines, tap up/down; 6-30 lines, hold the down key for about a second until I'm within a line or two, then tap up/down a couple times; >30 lines and use pgup/pgdown to get closer). For anything further away than that, I'm going to use isearch to get closer.

Sometimes I want to make a complicated motion in the horizontal and vertical axes at the same time in a context which is not well-formatted source code and hence has no good paragraph/word landing points. For this I move my hand slightly further and grab the mouse. It always amuses me watching people try to do it "the right way" and then spend 30 seconds trying to work out what sequence of buttons will get them there, then spend another 30 seconds remembering what they wanted to do when they got there.

I'm not trying to minimise the number of logical keystrokes, I'm trying to minimise the time and distraction of navigation. A few simple operations combined with key repeat seems to work really well. Lots of people seem to neglect the power offered by key repeat.

I'd love to meet somebody who could navigate source code faster than me and learn how they do it. When I do, I'll probably change my approach. However, I've worked with a lot of different people who used a lot of different approaches (yes, including that one where you display the line offset from point and type the number of every jump) and in the past decade I have not found any of them to be faster than me - although I have found a few who were roughly the same speed.

Re:Emacs and Vim by nilkn on Friday July 25, 2014 @04:14PM (#8087396)
> I cannot recall the last time I wanted to move 16 lines - that would imply I stopped to count the lines

I'm sure something like this is possible in Emacs, but in vim I have it set up so that my current line shows the absolute line number and other lines show the relative line number.

If I'm eyeing a particular line that I want to jump to, I just read off its relative line number and hit j or k, according to whether it's down or up from where I'm at -- I'm there. Because I use relative line numbers, the number is never more than two digits.

For more precise navigation (jumping to a particular spot on a particular line), I use a plugin called EasyMotion, which basically lets me jump to any text object on the screen with a few key strokes.

Re:Emacs and Vim by gknoy on Friday July 25, 2014 @07:18PM (#8088178)
I like the idea of knowing relative line numbers, but I have been unwilling to relinqish seeing absolute ones due to how prevalent it is to see them -- diffs, linting errors, and stack traces often include line numbers, and I find it really helpful to be able to easily find that. Go-to-line is supremely useful, but I also find the visual reminder helpful as well.
Re:Emacs and Vim by MAGZine on Saturday July 26, 2014 @01:09PM (#8090172)
In VS, I use VSVim which lets me actually have both absolute and relative line numbers, but it probably wouldn't be difficult to write a vimbinding to bind enabling/disabling the line numbers plugin to a chord/hotkey.
Re:Emacs and Vim by gknoy on Friday July 25, 2014 @07:16PM (#8088173)
Shoot! I meant to upvote you! (I'm sorry.)
Re:Emacs and Vim by nitrogen on Saturday July 26, 2014 @02:19PM (#8090330)
In vim, one would type 64↓.
Re:Emacs and Vim by akg on Friday July 25, 2014 @09:53AM (#8085161)
This seems to be one of those arguments where we programmers tend to optimize for the wrong problem. Sure, we may be able to input more text more comfortably with the merits of one text editor over another, but really, I think most of the time spent during programming is reading APIs, headers, other code and most importantly thinking. Typing is hardly the bottleneck.
Re:Emacs and Vim by mbrock on Friday July 25, 2014 @03:20PM (#8087097)
Except when it is... If you can edit fluently and quickly, _then_ coding is more of a nonissue, you're free to try things out, you can find and fix an error and Alt-Tab without blinking, you can harness this kind of physical flow of noninterrupted work, etc. I've worked alongside programmers for whom typing and editing were indeed quite the bottlenecks. Of course, any programming editor is probably good enough if you learn it.
Re:Emacs and Vim by Touche on Friday July 25, 2014 @08:25AM (#8084804)
What key do you press in Vim more often than any other? Esc! Not on the home row (although I'm sure you'll say you remap it to tab).
Re:Emacs and Vim by lepton on Friday July 25, 2014 @09:40AM (#8085085)
Esc is also C-[, and if you've mapped Control to the home row (eg, swapped with CapsLock) then it's not so bad either.
Re:Emacs and Vim by vitalique on Friday July 25, 2014 @08:32AM (#8084826)
If you remap Esc to jk you don't even have to lift your fingers.
Re:Emacs and Vim by vacri on Friday July 25, 2014 @09:17AM (#8084993)
Another common one is Capslock.
Re:Emacs and Vim by vutekst on Friday July 25, 2014 @10:59AM (#8085524)
Mapping capslock to be esc is what made vim possible for me.
Re:Emacs and Vim by calvins on Saturday July 26, 2014 @11:19AM (#8089895)
Agreed. I don't know how anybody could use vi with escape unmapped. It's also very useful outside vi though, since esc is the default 'cancel' key in many cases. For example, most browser dialogs (and keyboard-navigable menus) can be closed with esc, and it works for many desktop dialogs too (at least on Linux).
Re:Emacs and Vim by splawn on Friday July 25, 2014 @11:13AM (#8085609)
Im too lazy to move two fingers for that, instead mine is mapped to jj. =P
Re:Emacs and Vim by Touche on Friday July 25, 2014 @08:45AM (#8084865)
What is jk?
Re:Emacs and Vim by vitalique on Friday July 25, 2014 @09:07AM (#8084958)
Just key 'j' followed by 'k'. I have this in my vimrc for quickly jumping out of insert mode: inoremap jk <ESC>
Re:Emacs and Vim by Touche on Friday July 25, 2014 @09:18AM (#8084997)
To each his own. I'm very fluid with my esc key hitting. I find it to be a very satisfying motion.
Re:Emacs and Vim by sozforex on Friday July 25, 2014 @09:09AM (#8084962)
imap jk <Esc> In insert mode. First press j, in the same second press k.
Re:Emacs and Vim by dozzie on Friday July 25, 2014 @04:37PM (#8087512)
Esc? Not quite. C-c mostly. It differs sometimes from Esc, but rarely enough for me not to care.
Re:Emacs and Vim by tomsthumb on Friday July 25, 2014 @09:57PM (#8088617)
I haven't pressed the escape button in the past few years using vim. Do something like `imap lkj <ESC>` and `vmap lkj <ESC>`. It's way nicer.
Re:Emacs and Vim by adlpz on Friday July 25, 2014 @09:15AM (#8084982)
Remap to tab? Insanity!

I remap it to Caps Lock of course.

Re:Emacs and Vim by graywh on Friday July 25, 2014 @04:04PM (#8087335)
Where the Tab key is now is where the Escape key was on the system Bill Joy developed Vi.
Re:Emacs and Vim by Touche on Friday July 25, 2014 @09:18AM (#8085000)
Ah, right, I forgot what the common remap was, thought I'd get that wrong, thanks for the correction.
Re:Emacs and Vim by Crito on Friday July 25, 2014 @09:32PM (#8088512)
The more common remap is probably capslock->ctrl, for both vim and emacs users, I but I definitely prefer capslock->escape. During normal operation, my left pinky rides the gap between a and escape(aka capslock). Pressing either requires the slightest of deflections to the left or right.

I keep escape as escape as well. Capslock is absolutely worthless to me.

Re:Emacs and Vim by delackner on Saturday July 26, 2014 @01:35AM (#8089011)
Or use PCKeyboardhack and I forget the other plugin but on a Mac, I have a brief caps lock mapped as esc, but holding it is control. it works effortlessley.
Re:Emacs and Vim by Crito on Saturday July 26, 2014 @11:30PM (#8091871)
On my chromebook pixel, there is a super/windows key (labeled as a "search" key) where the capslock normally is on a US keyboard. Since I use super as the prefix key for all of my window manager shortcuts, I use xcape (https://github.com/alols/xcape) to allow that key to function both as super (if I hold it down) and as escape (if I tap it).

These sort of systems are a great way to remap keys; I wish such remapping was exposed by operating systems in a nice stock way.