Not sure if just trolling, but if not it seems you're not very experienced yet in the use of the tools of the trade of the professional programmer. The point of using the vi interface is nowadays (and yes I know about the original reasons of the modal workings of vi...) that moving your fingers off the home row takes too much effort, let alone having to move your hand to the mouse. It's easier to drive an automatic, why do professional drivers switch gears manually? Because learning the more advanced interface gives them more control over the way the machine behaves, and in their use case, the investment in learning it pays off handsomely in the added power later. Should regular users bother to lean vi? No. Programmers? Yes.
> Not sure if just trolling, but if not it seems you're not very experienced yet in the use of the tools of the trade of the professional programmer. [emphasis added]
Guess again -- I wrote Apple Writer in the late 1970s (http://en.wikipedia.org/wiki/Apple_Writer). One of my goals was to eliminate the modes that plagued contemporary editors and attract people interested in ease of use and efficiency. Apple Writer became a best-seller because (among other things) its competition, most derived from vi, required users to switch modes.
And I can't believe I'm having this conversation over 30 years later, still trying to get people to choose more efficient tools.
> ... you're not very experienced yet ...
It's likely that I was programming -- and publishing my programs -- before you were born:
There's a difference between "more efficient" and "easier to learn". You're advocating the latter. This is not a good thing.
For example, moving around by using the search feature (at least a well-designed incremental search like Vim or Emacs) is more efficient for longer distance moves (e.g. more than a couple of lines)--it's faster and, more importantly, takes less thought and context switching.
When you have to move to a distinct part of your text file, chances are you know what the content there is. With a command like /, you directly turn that knowledge into efficient movement. With the arrow keys, you have to leave the home row and do a bunch of movements to get where you're going. You have to figure out how to turn the word you want to go to into a bunch of arrow actions. It's even more difficult of your target is off-screen.
Ultimately, a rich set of movement commands you can access without moving your hand is going to be more efficient than using the standard arrow keys. This is particularly true for somewhat semantic commands like moving by block or expression or moving to a word (the command in question here).
Ideally, you want to move around faster with less context switching. Keyboard-oriented editors like Vim and Emacs are much better at this than any other editor I've seen, as long as you learned how to use them properly. This really makes the learning curve more than with it.
> There's a difference between "more efficient" and "easier to learn". You're advocating the latter. This is not a good thing.
You've posed a false dichotomy. Modern editors are both more efficient and easier to learn.
> Ideally, you want to move around faster with less context switching. Keyboard-oriented editors like Vim and Emacs are much better at this than any other editor I've seen, as long as you learned how to use them properly.
Pico is a keyboard-only editor, and it's easier to navigate, and to use in general. So is every other editor that exists, written after about 1980. None of them require the user to switch modes, an idea that died with vi -- I mean, if only vi had died.
As soon as keyboards included arrow keys, the handwriting was on the wall.
How is a mouse more efficient than an ability to move to a phrase with a bit of typing, skip words ahead with a single letter instead of ctrl + shift, move to a new line and a specific place on that line with a couple of button presses, etc?
> How is a mouse more efficient than an ability to move to a phrase with a bit of typing, skip words ahead with a single letter instead of ctrl + shift, move to a new line and a specific place on that line with a couple of button presses, etc?
I can't improve on your explanation as the answer to your own question. Obviously using a mouse to cut/copy and paste, within the same document or between independent documents, is more efficient than what you just described.
Moving my hand over to the mouse, moving the mouse cursor to wherever I need, selecting that text and dragging while my editor slowly scrolls with my cursor when I could use a few key sequences with no context switch is the opposite of efficient.
> Obviously using a mouse to cut/copy and paste, within the same document or between independent documents, is more efficient than what you just described.
You may personally believe this strongly, but it's most certainly not "obvious"...
In reality, as is usually the case, it depends very much on the details of what's being done. Some cases are faster with a mouse, others with well-designed keyboard commands.
[Which is why good editors support both styles of interaction...]
Vi people look at me like I have a mental disability when I say this, but I've written tens of thousands of lines of code in pico; it is a completely serviceable programmer's editor.
For example, moving around by using the search feature (at least a well-designed incremental search like Vim or Emacs) is more efficient for longer distance moves (e.g. more than a couple of lines)--it's faster and, more importantly, takes less thought and context switching.
I'm no longer sure I agree with any of this.
When I move in Vim and the whole screen jumps, I have to reorient myself, and convince myself that I have jumped to the right place, and not a similar-looking-place by mistake. I have to take mental energy away from thinking about the content to think about the editor and look for a good jump command, where arrow keys are so basic that they aren't a distraction at all.
I am so glad to see someone else with perspective at least make their voice heard. This vim thing is absolute lunacy. I was booting machines from scratch thirty years ago with Forth and writing my own text editors to be able to program the machine. I used crippled keyboards without mice, function keys and cursor buttons. And I gladly said goodbye to that crap years ago.
Then you come to a place like HN and you have "youngsters" forming a cult around a shit editor with a shit interface that ignores all modern peripherals. A shit editor that would have been written in an entirely different way had the authors had access to more than A-Z, 0-9 and a few mode keys. Then they actually make themselves believe that they are being more "efficient" by using this shit editor. I guess that's no different from cults who believe in imaginary things.
As I have said before, show me one company, one project, that has some in on time, budget and without bugs because of their choice of vim over even something like Notepad and I'll eat my words.
Young HN readers need to at least be made to consider that the factors influencing the quality, success or failure of software project or startup have so little to do with your choice of text editors that it is beyond ridiculous to even discuss it.
> As I have said before, show me one company, one project, that has some in on time, budget and without bugs because of their choice of vim over even something like Notepad and I'll eat my words.
Show me one transportation company that would fail because their trucks do not have air conditioning or power steering.
Is it nice to have those things, especially if you drive around the entire day? Of couse.
I'm with you that vim should not be a cult.
But calling it a shit interface is over the top.
If it was, why are there so many popular vim emulation plugins for many of the modern IDEs.
> One of my goals was to eliminate the modes that plagued contemporary editors and attract people interested in ease of use and efficiency.
I certainly bought into this line of reasoning when I learned Emacs instead of vi all those years ago. These days I'm not so sure. Me, RMS, and most of my Emacs-using friends have developed carpal tunnel syndrome, while the people I know that use vi have mostly not. Furthermore I can feel my fingers hurt every time I have to type C-M-something or M-something C-something M-something C-something. This sort of stuff is rampant in Emacs, not to mention Eclipse and all the other IDEs that I know of, and from what I can tell of vi, seems to be less so in vi.
I have been working as a professional programmer for twenty years. I have used more text editors than I can remember; I've even written a couple of new ones. My experience has been that the editor makes almost no difference. I spend far more time thinking about code than I ever do writing it.
Vi has a terrible ancient mess of an interface designed for primitive machines in a bygone age. I believe that part of its popularity comes from a sort of stockholm syndrome effect; people who have spent the time required to master it don't want to feel that they have wasted their effort, so they assign some of the credit for their own innate productivity to the editor.
In practice, I have never seen any difference in productivity levels among my teammates based on the text editors they use. All of the professional programmers I know spend far more time thinking about code, discussing code, and reviewing code than they ever do editing code; even if vi were somehow magically able to make people twice as productive at editing code, that would still only be a small single digit percentage of productivity improvement overall. But I have seen nothing which makes me believe that people using vi are more productive even on strictly text-editing-based tasks than people using other text editors.
There are occasional situations where a vi user can do some complex macro thing that rapidly does some transformation to a text file, which someone using a simpler text editor might take longer to perform, but if your project is full of code which needs to be transformed in repetitive, brute force ways, you have bigger problems than your choice of editor.
My problem is that this power doesn't motivate me. Do I want to make lots of changes rapidly? No. Further: THAT WOULD BE BAD. I want to make concise changes based on sober reflection. Do I want a convenient browsing mechanism that stays minimal while I internalise the code I'm reading? Yes. I get the _why_ of vim, but the obsession over mashing keys as fast as you can seems like a bad smell in terms of developer attitude.
for the latter, i'm saying i'd rather navigate with a scroll wheel and hyperlinked names a lot more than i want to search multiple buffers. hands away from the keyboard, reading mode rather than typing mode, getting context
I guess some people has too look where the arrow keys are, in order to move the hand there and start using them. The same with the insert, home, etc. block. In that case, I can understand that it takes too much effort.
In my case it's like I know the keyboard better than my hand, for example hit Shift + Insert so fast that I barely perceive what I do, except because something got inserted. The same for the arrow keys (which I seldom use alone, as they do more when using a modifier key, like Ctrl).
Now to the point: please don't over-generalize, my own case proves that for some people arrow keys are fast enough.
In fact, it's exactly like switching gears in a manual transmission, which I do. After enough practice you just know where each shift is, and do it without thinking. It's a special case of spacial awareness.
However, I concede to the parent that using search (* or Ctrl-F) is much better than jumping around.
I'm not sure if he's trolling or not either. But since he wrote the original "Apple Writer", (see http://www.arachnoid.com/administration/index.html ) It seems likely that he knows something about the tools of a professional programmer.