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

> The average developer averages 10 lines of finished code per day. And even with a raw 10x that amount to account for variance, changes, debugging etc, you'd be at 12 lines PER HOUR. Being generous at a full 80 chars per line, you have a maximum of 1000 keypresses per hour, or an average of one every 3 seconds. Even doubling your typing speed or keyboard response time would have no discernible effect.

Just my personal experience, it's not about how fast I can get my ideas down in writing (whether code or not), it's about how often I am broken out of the flow when typing.

At one extreme, using your stats above of "10 finished lines of code per day", you could argue that using this keyboard (https://www.youtube.com/watch?v=9BnLbv6QYcA) should have no effect on your productivity, and yet no developer would make or support this argument.

Small frictions add up; there's a joelonsoftware post that I read a long time ago about this[1], and it stuck for 24 years!

The best editor/environment is the one that gets out of my way. One where I don't need to look things up on google. One in which I have already learned all the shortcuts, and don't need to relearn them to make the software useful.

Emacs `M-x sql-connect` is much easier for me to do than to look up, in VS Code, what shortcut has been assigned to the extension I use that does the same thing, and then look it up again in a few years when that extension is no longer supported. Same for Vim commands.

Using VS Code, or a full-fledged IDE[2] removes the whole command interface: I now need to remember dozens of key-chords, not a handful of verbs and a handful of nouns. I need to remember which menu, and which submenu needs to be clicked.

Each time I want to do something in the IDE I switch focus from the code to the IDE. When in Vim or Emacs, that never happens!

The "keyboard maximalism" isn't about speed == productivity, IME. It's about "friction == disruption".

--------------------------------------------

[1] From https://www.joelonsoftware.com/2000/04/10/controlling-your-e...

> So that’s what days were like. A bunch of tiny frustrations, and a bunch of tiny successes. But they added up. Even something which seems like a tiny, inconsequential frustration affects your mood. Your emotions don’t seem to care about the magnitude of the event, only the quality.

> And I started to learn that the days when I was happiest were the days with lots of small successes and few small frustrations.

[2] Which I use daily, btw. I'm not knocking the developers who use IDEs.



> Emacs `M-x sql-connect` is much easier for me to do than to look up, in VS Code, what shortcut has been assigned to the extension I use

And the knowledge of `M-x sql-connect` came to you how? In a dream? Commands in Emacs are undiscoverable unless you know what to look for.

> Each time I want to do something in the IDE I switch focus from the code to the IDE. When in Vim or Emacs, that never happens!

No. It happens only because you're used to Emacs and Vim, and unused to an IDE.

> So that’s what days were like. A bunch of tiny frustrations, and a bunch of tiny successes. But they added up.

And those frustrations are rampant in the Emacs/Vim world. People pretend they are not there because of this false notion that only those two are the sign of a great programmer.

By the time I've done my coding, project-wide refactoring, and looked up half of a project's code most Emacsers/Vimers are still stuck trying to find all references with a full-text search.

There's a reason VSCode's LSP took the world by storm


> And the knowledge of `M-x sql-connect` came to you how? In a dream? Commands in Emacs are undiscoverable unless you know what to look for.

It's one command that implements autocomplete which gives you access to the entire system.

> It happens only because you're used to Emacs and Vim,

That's my entire point! I learned the majority of Emacs and Vim commands well back in the mid-90s.

> and unused to an IDE.

Objectively not true, if you had read the entire comment.

> People pretend they are not there because of this false notion that only those two are the sign of a great programmer.

I think you have a chip on your shoulder about this. You read my post as some sort of attack on IDEs so responded with an attack of your own.

My point was about little frictions all adding up. Sure, there's a steep learning curve in learning a programmable editor, but you only climb that curve once.

It just takes much less memory to remember 4 verbs and maybe 6 nouns in Vim to perform navigation, than learning 4x6=24 shortcuts for similar functionality in Jetbrains/Eclipse/Vs/VSCode/etc.

I'm just explaining why needing to remember fewer things is the path of least resistance for me; whatever argument you are talking about involving signs of great programmers is beyond the scope of what I am saying.


> It's one command that implements

And you know this command how? You discovered it how?

> That's my entire point! I learned the majority of Emacs and Vim commands well back in the mid-90s.

Indeed. And now you complain about friction in IDEs because you refuse to learn IDEs to the same extent.

> My point was about little frictions all adding up.

Yes, yes they do. And I find there are significantly more frictions in Emacs and Vim than in a modern IDE. The only reason you don't see them is that you've already learned Emacs/Vim

> It just takes much less memory to remember 4 verbs and maybe 6 nouns in Vim to perform navigation, than learning 4x6=24 shortcuts

Wat. I don't even know what these random numbers mean, and where you got them from. And how we went from functionality and capabilities to navigation.

> I'm just explaining why needing to remember fewer things

Thing is, you don't remember "fewer things" with Emacs/Vim. You end up remembering about the same, or greater number of things on top of significantly worse functionality.

Like you pretend that remembering dozens of various commands to type into `M-x` is somehow easier, and requires less memory than remembering the common shortcuts for common actions and falling back to Cmd+P(VS Code)/Cmd+Shift+A(Intelli J) to look up actions you rarely use.


Why the antagonism? Programmable editors don't work for you, fine.

Why make personal attacks on me, like this:

> you pretend that

I'm not pretending anything.

> Thing is, you don't remember "fewer things" with Emacs/Vim. You end up remembering about the same, or greater number of things

Not true. Like I said, I use an IDE daily, and there's much more to remember to get the same functionality that I get out of (for example) Vim. It's easier for me to remember (for example) 10 nouns that can be combined with 10 verbs than to memorise 100 shortcuts.

You may find it easier to memorise 100 shortcuts rather than 10 verbs and 10 nouns, but I am certainly not pretending when I tell you that I find it easier to remember 20 things rather than 100 things.


> It's easier for me to remember (for example) 10 nouns that can be combined with 10 verbs than to memorise 100 shortcuts.

1. There are no nouns or verbs in Vim. There's a haphazardly built combination of letters that are laboriously explained as some grand design.

2. You keep coming up with random numbers that make no sense and pretend (yes, pretend) that they are somehow true and relevant

I didn't memorise 100 shortcuts.

The only reason you struggle to get the same functionality out of an IDE is that you don't want to invest as much time and energy into learning it as you did with emacs/vim. There's nothing inherently easier about memorising `M-x sql-connect` or 20 random letters in Vim than learning basic functionality and shortcuts of an IDE.


> 1. There are no nouns or verbs in Vim.

Yes, there is.

Since your entire argument is predicated on a false premise, maybe you should stop digging at this point?


I agree. Honestly, I’m proficient with vim/emacs, but I’ve been using JetBrains for ~13 years and don’t want to sound boastful, but I’m pretty sure I’ll run circles around non-trivial amount of vim users in terms of productivity/efficiency/raw text editing. The amount of time I’ve put in customizing my workflow is stupid. The false dichotomy that if you use IDE you must be point-clicking around menus is often repeated. I guess … know your tool of choice inside-out is what’s more important.


> > It just takes much less memory to remember 4 verbs and maybe 6 nouns in Vim to perform navigation, than learning 4x6=24 shortcuts

> Thing is, you don't remember "fewer things" with Emacs/Vim. You end up remembering about the same, or greater number of things on top of significantly worse functionality.

You don't understand vim yet you confidently state that it requires remembering more things. vim is like a language. You do not memorize entire English sentences when you choose to communicate with someone, it's the same in vim. You do not memorize how to do do something, but rather the grammar/verbs/nouns.

If you know that 'd' is the verb for deleting, and that 'w' is the motion for 'word', you can combine them into 'dw' to delete until the end of the word. When you later learn that '$' takes you to the end of the line, you know that you can do 'd$' to delete until the end of the line. You do not need to memorize 'd$' and 'dw' individually, just the motions and actions separately.

The same applies to actions, when you learn that y is yank (copy), you can apply the same 'w' and '$' motions in that cases to copy until the end of the word/line. That is what the poster means about verbs and nouns. Vim isn't discoverable, you cannot learn to use it without reading. But it is the most logically consistent "editing language" I have personally seen (alongside kakoune/helix).

You are also mixing up many concepts in your arguments. You can get LSP in vim/emacs and you can get vim-ish hotkeys in popular IDE's. The topic of this thread, Zed, is pretty vimmy and is closer to vs-code than it is to vim.


> If you know that 'd' ... and that 'w'

> When you later learn that '$'

> when you learn that y

As if that doesn't require you to remember things. In the end I always, without fail, see people consistently struggle with doing things in Vim that take a single shortcut (or an action lookup) in an IDE. Even people who've been working in Vim for years.

Because it's a nice little story about "oh, it's so easy to yank a word" because it's always easy to come up with the most trivial examples.

And this narrative about verbs and nouns falls apart even for trivial examples. E.g. the simple act of going to end of line, end of file, beginning of file are three different shortcuts that have little to no relation to each other. No worries, you just have to memorize them. Don't forget variations on shortcuts like yy and Y. And many other idiosyncrasies that don't fall neatly into the verb-noun narrative.

> Vim isn't discoverable, you cannot learn to use it without reading

Funny how the very same people who say this are hell bent on never learning IDEs.

> You can get LSP in vim/emacs

Yes, you can. There's a reason LSP never came out of emacs/vim world.


> Emacs `M-x sql-connect` is much easier for me to do than to look up, in VS Code, what shortcut has been assigned to the extension I use that does the same thing [...]

> removes the whole command interface

`C-shift-P` works the same in VS Code (and other editors) as `M-x` in Emacs. VS Code (and many other Editors, like Sublime Text) has the same "keyboard only" usage possibility as Emacs.

I've switched from Emacs (after more than 20 years) to VS Code to Sublime Text and did not need to change my habits. And to be honest, Sublime Merge is what Magit always wanted to be, a useful combination of GUI (for the "easy stuff") and a textual interface for git.


> `C-shift-P` works the same in VS Code (and other editors) as `M-x` in Emacs.

I slightly disagree with this assertion. I upvoted you anyway because I think it's mostly correct for those who aren't full into Emacs :-)

My reason for disagreement: `M-x` in Emacs gives you access to every single thing that the editor can do (like the function to move the point forward with `forward-char`). The `C-s-p` in VSCode doesn't give you the same.


As long as we're being pedantic: M-x only gives access to every single interactive function (which means every function which has the `(interactive)` statement). I can't speak as how to that relates to Microsoft VS Code's 'C-s-p' though.


There's M-:




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

Search: