Emacs and Vim in the Age of AI

2026-03-104:21200138batsov.com

It’s tough to make predictions, especially about the future. – Yogi Berra

It’s tough to make predictions, especially about the future.

– Yogi Berra

I’ve been an Emacs fanatic for over 20 years. I’ve built and maintained some of the most popular Emacs packages, contributed to Emacs itself, and spent countless hours tweaking my configuration. Emacs isn’t just my editor – it’s my passion, and my happy place.

Over the past year, I’ve also been spending a lot of time with Vim and Neovim, relearning them from scratch and having a blast contrasting how the two communities approach similar problems. It’s been a fun and refreshing experience.1

And lately, like everyone else in our industry, I’ve been playing with AI tools – Claude Code in particular – watching the impact of AI on the broader programming landscape, and pondering what it all means for the future of programming. Naturally, I keep coming back to the same question: what happens to my beloved Emacs and its “arch nemesis” Vim in this brave new world?

I think the answer is more nuanced than either “they’re doomed” or “nothing changes”. Predicting the future is obviously hard work, but it’s so fun to speculate on it.

My reasoning is that every major industry shift presents plenty of risks and opportunities for those involved in it, so I want to spend a bit of time ruminating over the risks and opportunities for Emacs and Vim.

The Risks

The IDE gravity well

VS Code is already the dominant editor by a wide margin, and it’s going to get first-class integrations with every major AI tool – Copilot (obviously), Codex, Claude, Gemini, you name it. Microsoft has every incentive to make VS Code the best possible host for AI-assisted development, and the resources to do it.

On top of that, purpose-built AI editors like Cursor, Windsurf, and others are attracting serious investment and talent. These aren’t adding AI to an existing editor as an afterthought – they’re building the entire experience around AI workflows. They offer integrated context management, inline diffs, multi-file editing, and agent loops that feel native rather than bolted on.

Every developer who switches to one of these tools is a developer who isn’t learning Emacs or Vim keybindings, isn’t writing Elisp, and isn’t contributing to our ecosystems. The gravity well is real.

I never tried Cursor and Windsurf simply because they are essentially forks of VS Code and I can’t stand VS Code. I tried it several times over the years and I never felt productive in it for a variety of reasons.

Do you even need a “power tool” anymore?

Part of the case for Emacs and Vim has always been that they make you faster at writing and editing code. The keybindings, the macros, the extensibility – all of it is in service of making the human more efficient at the mechanical act of coding.

But if AI is writing most of your code, how much does mechanical editing speed matter? When you’re reviewing and steering AI-generated diffs rather than typing code character by character, the bottleneck shifts from “how fast can I edit” to “how well can I specify intent and evaluate output.” That’s a fundamentally different skill, and it’s not clear that Emacs or Vim have an inherent advantage there.

The learning curve argument gets harder to justify too. “Spend six months learning Emacs and you’ll be 10x faster” is a tough sell when a junior developer with Cursor can scaffold an entire application in an afternoon.2

The corporate backing asymmetry

VS Code has Microsoft. Cursor has venture capital. Emacs has… a small group of volunteers and the FSF. Vim had Bram, and now has a community of maintainers. Neovim has a small but dedicated core team.

This has always been the case, of course, but AI amplifies the gap. Building deep AI integrations requires keeping up with fast-moving APIs, models, and paradigms. Well-funded teams can dedicate engineers to this full-time. Volunteer-driven projects move at the pace of people’s spare time and enthusiasm.

The doomsday scenario

Let’s go all the way: what if programming as we know it is fully automated within the next decade? If AI agents can take a specification and produce working, tested, deployed software without human intervention, we won’t need coding editors at all. Not Emacs, not Vim, not VS Code, not Cursor. The entire category becomes irrelevant.

I don’t think this is likely in the near term, but it’s worth acknowledging as a possibility. The trajectory of AI capabilities has surprised even the optimists (and I was initially an AI skeptic, but the rapid advancements last year eventually changed my mind).

The Opportunities

AI makes configuration and extension trivial

Here’s the thing almost nobody is talking about: Emacs and Vim have always suffered from the obscurity of their extension languages. Emacs Lisp is a 1980s Lisp dialect that most programmers have never seen before. VimScript is… VimScript. Even Lua, which Neovim adopted specifically because it’s more approachable, is niche enough that most developers haven’t written a line of it.

This has been the single biggest bottleneck for both ecosystems. Not the editors themselves – they’re incredibly powerful – but the fact that customizing them requires learning an unfamiliar language, and most people never make it past copying snippets from blog posts and READMEs.

I felt incredibly overwhelmed by Elisp and VimScript when I was learning Emacs and Vim for the first time, and I imagine I wasn’t the only one. I started to feel very productive in Emacs only after putting in quite a lot of time to actually learn Elisp properly. (Never bothered to do the same for VimScript, though, and admittedly I’m not too eager to master Lua either.)

AI changes this overnight. You can now describe what you want in plain English and get working Elisp, VimScript, or Lua. “Write me an Emacs function that reformats the current paragraph to 72 columns and adds a prefix” – done. “Configure lazy.nvim to set up LSP with these keybindings” – done. The extension language barrier, which has been the biggest obstacle to adoption for decades, is suddenly much lower.

The same goes for plugin development

After 20+ years in the Emacs community, I often have the feeling that a relatively small group – maybe 50 to 100 people – is driving most of the meaningful progress. The same names show up in MELPA, on the mailing lists, and in bug reports. This isn’t a criticism of those people (I’m proud to be among them), but it’s a structural weakness. A community that depends on so few contributors is fragile.

And it’s not just Elisp and VimScript. The C internals of both Emacs and Vim (and Neovim’s C core) are maintained by an even smaller group. Finding people who are both willing and able to hack on decades-old C codebases is genuinely hard, and it’s only getting harder as fewer developers learn C at all.

AI tools can help here in two ways. First, they lower the barrier for new contributors – someone who understands the concept of what they want to build can now get AI assistance with the implementation in an unfamiliar language. Second, they help existing maintainers move faster. I’ve personally found that AI is excellent at generating test scaffolding, writing documentation, and handling the tedious parts of package maintenance that slow everything down.

AI integrations are already happening

The Emacs and Neovim communities aren’t sitting idle. There are already impressive AI integrations:

Emacs:

  • gptel – a versatile LLM client that supports multiple backends (Claude, GPT, Gemini, local models)
  • ellama – an Emacs interface for interacting with LLMs via llama.cpp and Ollama
  • aider.el – Emacs integration for Aider, the popular AI pair programming tool
  • copilot.el – GitHub Copilot integration (I happen to be the current maintainer of the project)
  • elysium – an AI-powered coding assistant with inline diff application
  • agent-shell – a native Emacs buffer for interacting with LLM agents (Claude Code, Gemini CLI, etc.) via the Agent Client Protocol

Neovim:

  • avante.nvim – a Cursor-like AI coding experience inside Neovim
  • codecompanion.nvim – a Copilot Chat replacement supporting multiple LLM providers
  • copilot.lua – native Copilot integration for Neovim
  • gp.nvim – ChatGPT-like sessions in Neovim with support for multiple providers

And this is just a sample. Building these integrations isn’t as hard as it might seem – the APIs are straightforward, and the extensibility of both editors means you can wire up AI tools in ways that feel native. With AI assistance, creating new integrations becomes even easier. I wouldn’t be surprised if the pace of plugin development accelerates significantly.

Here’s an irony that deserves more attention: many of the most powerful AI coding tools are terminal-native. Claude Code, Aider, and various Copilot CLI tools all run in the terminal. And what lives in the terminal? Emacs and Vim.3

Running Claude Code in an Emacs vterm buffer or a Neovim terminal split is a perfectly natural workflow. You get the AI agent in one pane and your editor in another, with all your keybindings and tools intact. There’s no context switching to a different application – it’s all in the same environment.

This is actually an advantage over GUI-based AI editors, where the AI integration is tightly coupled to the editor’s own interface. With terminal-native tools, you get to choose your own editor and your own AI tool, and they compose naturally.

Emacs as an AI integration platform

Emacs’s “editor as operating system” philosophy is uniquely well-suited to AI integration. It’s not just a code editor – it’s a mail client (Gnus, mu4e), a note-taking system (Org mode), a Git interface (Magit), a terminal emulator, a file manager, an RSS reader, and much more.

AI can be integrated at every one of these layers. Imagine an AI assistant that can read your org-mode agenda, draft email replies in mu4e, help you write commit messages in Magit, and refactor code in your source buffers – all within the same environment, sharing context. No other editor architecture makes this kind of deep, cross-domain integration as natural as Emacs does.

Admittedly, I’ve stopped using Emacs as my OS a long time ago, and these days I use it mostly for programming and blogging. (I’m writing this article in Emacs with the help of markdown-mode.) Still, I’m only one Emacs user and many are probably using it in a more holistic manner.

AI helps you help yourself

One of the most underappreciated benefits of AI for Emacs and Vim users is mundane: troubleshooting. Both editors have notoriously steep learning curves and opaque error messages. “Wrong type argument: stringp, nil” has driven more people away from Emacs than any competitor ever did.

AI tools are remarkably good at explaining cryptic error messages, diagnosing configuration issues, and suggesting fixes. They can read your init file and spot the problem. They can explain what a piece of Elisp does. They can help you understand why your keybinding isn’t working. This dramatically flattens the learning curve – not by making the editor simpler, but by giving every user access to a patient, knowledgeable guide.

I don’t really need any AI assistance to troubleshoot anything in my Emacs setup, but it’s been handy occasionally in Neovim-land, where my knowledge is relatively modest by comparison.

There’s at least one documented case of someone returning to Emacs after years away, specifically because Claude Code made it painless to fix configuration issues. They’d left for IntelliJ because the configuration burden got too annoying – and came back once AI removed that barrier. “Happy f*cking days I’m home again,” as they put it. If AI can bring back lapsed Emacs users, that’s a good thing in my book.

Even in the post-coding apocalypse, Emacs and Vim survive

Let’s revisit the doomsday scenario. Say programming is fully automated and nobody writes code anymore. Does Emacs die?

Not necessarily. Emacs is already used for far more than programming. People use Org mode to manage their entire lives – tasks, notes, calendars, journals, time tracking, even academic papers. Emacs is a capable writing environment for prose, with excellent support for LaTeX, Markdown, AsciiDoc, and plain text. You can read email, browse the web, manage files, and yes, play Tetris.

Vim, similarly, is a text editing paradigm as much as a program. Vim keybindings have colonized every text input in the computing world – VS Code, IntelliJ, browsers, shells, even Emacs (via Evil mode). Even if the Vim program fades, the Vim idea is immortal.4

And who knows – maybe there’ll be a market for artisanal, hand-crafted software one day. “Locally sourced, free-range code, written by a human in Emacs.” I’d buy that t-shirt. And I’m fairly certain those artisan programmers won’t be using VS Code.

So even in the most extreme scenario, both editors have a life beyond code. A diminished one, perhaps, but a life nonetheless.

The Bigger Picture

I think what’s actually happening is more interesting than “editors die” or “editors are fine.” The role of the editor is shifting.

For decades, the editor was where you wrote code. Increasingly, it’s becoming where you review, steer, and refine code that AI writes. The skills that matter are shifting from typing speed and editing gymnastics to specification clarity, code reading, and architectural judgment.

In this world, the editor that wins isn’t the one with the best code completion – it’s the one that gives you the most control over your workflow. And that has always been Emacs and Vim’s core value proposition.

The question is whether the communities can adapt fast enough. The tools are there. The architecture is there. The philosophy is right. What’s needed is people – more contributors, more plugin authors, more documentation writers, more voices in the conversation. AI can help bridge the gap, but it can’t replace genuine community engagement.

The ethical elephant in the room

Not everyone in the Emacs and Vim communities is enthusiastic about AI, and the objections go beyond mere technophobia. There are legitimate ethical concerns that are going to be debated for a long time:

  • Energy consumption. Training and running large language models requires enormous amounts of compute and electricity. For communities that have long valued efficiency and minimalism – Emacs users who pride themselves on running a 40-year-old editor, Vim users who boast about their sub-second startup times – the environmental cost of AI is hard to ignore.

  • Copyright and training data. LLMs are trained on vast corpora of code and text, and the legality and ethics of that training remain contested. Some developers are uncomfortable using tools that may have learned from copyrighted code without explicit consent. This concern hits close to home for open-source communities that care deeply about licensing.

  • Job displacement. If AI makes developers significantly more productive, fewer developers might be needed. This is an uncomfortable thought for any programming community, and it’s especially pointed for editors whose identity is built around empowering human programmers.

These concerns are already producing concrete action. The Vim community recently saw the creation of EVi, a fork of Vim whose entire raison d’etre is to provide a text editor free from AI-assisted (generated?) code contributions.5 Whether you agree with the premise or not, the fact that people are forking established editors over this tells you how strongly some community members feel.

I don’t think these concerns should stop anyone from exploring AI tools, but they’re real and worth taking seriously. I expect to see plenty of spirited debate about this on emacs-devel and the Neovim issue tracker in the years ahead.

Closing Thoughts

The future ain’t what it used to be.

– Yogi Berra

I won’t pretend I’m not worried. The AI wave is moving fast, the incumbents have massive advantages in funding and mindshare, and the very nature of programming is shifting under our feet. It’s entirely possible that Emacs and Vim will gradually fade into niche obscurity, used only by a handful of diehards who refuse to move on.

But I’ve been hearing that Emacs is dying for 20 years, and it’s still here. The community is small but passionate, the editor is more capable than ever, and the architecture is genuinely well-suited to the AI era. Vim’s situation is similar – the core idea is so powerful that it keeps finding new expression (Neovim being the latest and most vigorous incarnation).

The editors that survive won’t be the ones with the flashiest AI features. They’ll be the ones whose users care enough to keep building, adapting, and sharing. That’s always been the real engine of open-source software, and no amount of AI changes that.

So if you’re an Emacs or Vim user: don’t panic, but don’t be complacent either. Learn the new AI tools (if you’re not fundamentally opposed to them, that is). Pimp your setup and make it awesome. Write about your workflows. Help newcomers. The best way to ensure your editor survives the AI age is to make it thrive in it.

Maybe the future ain’t what it used to be – but that’s not necessarily a bad thing.

That’s all I have for you today. Keep hacking!


Read the original article

Comments

  • By xenodium 2026-03-148:592 reply

    I put off adopting popular agents for most of 2025 primarily because there was no agent-agnostic path to first-class Emacs integration. That changed with ACP (https://agentclientprotocol.com), thus I started working on agent-shell.

    I'm happy with how the integration is shaping up, enabling me to have my cake and eat it too (Emacs + AI agents).

    I wrote an agent-shell post recently with the latest changes https://xenodium.com/agent-shell-0-47-1-updates

    • By hbogert 2026-03-1410:242 reply

      You have Every right to plug your agentshell here. I love it and I don't even care that much for agents (yet)

      • By mark_l_watson 2026-03-1411:49

        I agree, agentshell is a nice way to chat with LLMs. Well worth setting up. Emacs eye candy.

      • By xenodium 2026-03-1415:10

        That's nice to hear. Thank you!

    • By nachojreilly 2026-03-1420:281 reply

      I tried it and was underwhelmed. Without /resume or /rewind, it's unusable. After Opencode botched a simple yes/no (yesterday's top HN story), I'm convinced the frontier model companies will continue expanding the usability gap between their proprietary harnesses and the open-source ones.

      • By xenodium 2026-03-1423:50

        Resume is supported by agent-shell, but is dependent on agent's to implement the relevant ACP. Do you know if OpenCode's ACP implementation has listing and resuming session support?

        Also, you'll need to enable resuming as per post (it's a new feature) https://xenodium.com/agent-shell-0-47-1-updates

  • By jurschreuder 2026-03-147:573 reply

    I'm not sure AI Agents can already beat the average VIM user.

    I use VIM and I get some inspiration from LLMs sometimes, but me and other developers always after some time give up and just quickly do it manually.

    AI Agents will just full the code with maaaassive swaths of texts it will just make a project unusable.

    We even get paid to turn client's AI LLM Claude sketches into real programs.

    • By keithnz 2026-03-148:014 reply

      This is not my experience at all, the AI agents are many many many times faster than what I can do. What anyone can do. It's crazy how quick I can create stuff these days.

      • By gdorsi 2026-03-148:351 reply

        It really depends on what kind and of job you do.

        If it's not something very common LLMs could end up generating random code.

        Also if you work on something performance critical, you can get inspiration from LLMs, but they often don't write fast code.

        • By keithnz 2026-03-148:541 reply

          not my experience, they write fast code, and if you ask them to optimize, can pull all kinds of tricks out of the bag. Even with some of the niche stuff I work on, they seem really good.

          • By mchaver 2026-03-149:481 reply

            Without telling us what kind of code you are talking about it is hard to compare. I would say that is true for CRUD web code because there is so much out there that the LLMs can reference.

            • By keithnz 2026-03-1410:074 reply

              I work on all sorts as we have an IoT product offering.... embedded bare metal systems, web, backend IoT servers, Gateways, APIs, Import/Export Systems, Integrations with Manufacturing systems, accounting systems, Automatic Test Equipment. I've been coding for nearly 50 years now, so pretty experienced. What peoples comments seem to imply to me is that they haven't really gone full agentic coding, where you hone your context, your tools, and how you iterate and test with an AI agent. Where any mistakes an AI makes you make sure it can't do it again, you have it setup so your AI code reviews are honed to focus on the things you care about etc.

              • By gdorsi 2026-03-1411:201 reply

                Software development is a quite vast discipline.

                In my experience performance of LLMs can be surprisingly good on things that are not mainstream, like database engineering, and surprisingly bad at mainstream categories approached in an unconventional way.

                That said, I'm amazed that you have 50 years of experience and still able to have the mental flexibility to adapt to new development paradigms.

                As you imply, this stuff isn't simple to pick up, and is completely different on how we have done our job without AI.

                • By cbm-vic-20 2026-03-1412:421 reply

                  > I'm amazed that you have 50 years of experience and still able to have the mental flexibility to adapt to new development paradigms.

                  This is the root of age discrimination in technology fields.

                  • By gdorsi 2026-03-1413:51

                    Sorry, I now realize that it could be read like this.

                    Just to clarify, I meant to share admiration toward a fellow engineer.

                    I do not think that age implies any hard assumption, usually brings cultural diversity which is good.

              • By keithnz 2026-03-1411:24

                gdorsi , it's not that hard to swap really, because the goal, designing systems, just got easier. I feel AI lets you be a system engineer way better as you can quickly iterate. I have the same kinds of goals in mind, just can do it a heck of a lot quicker.

              • By keithnz 2026-03-1411:211 reply

                hubertdinsk, can't reply directly... but yes lots of niche things, especially in the embedded side, automatic test side. We have a lot of hardware, we control a lot of things, sense a lot of things. There's nothing inherently complicated about it such that AI can't code, in fact you feed AI technical data sheets its insanely useful when writing code against that hardware. It's going to pick up on all the weird nuances. It's great for protocols, especially proprietary ones. Anything with spec sheets are good.

                • By hubertdinsk 2026-03-1413:13

                  there's no magic anywhere. At the end of the day the result is 0 and 1 onto memory.

                  The approach to get there is the differentiate factor. If you are to tell a probabilistic tool to be 99.9999999% correct it would just be silly.

              • By hubertdinsk 2026-03-1411:05

                so not niche at all. You described a bit of everything.

                Niche is more like "ISO26262 compliant, response time under 50ms, measured with a oscilloscope with at least 40MHz bandwidth, failure rate less than 10^-7, proven with maths and soak tests". It gets more niche the closer you get to hardware.

                Next word prediction will get you laughed out of the room.

      • By armchairhacker 2026-03-148:553 reply

        AI can generate code much much faster.

        But do you never need a specific change (e.g. bugfix), that even describing in English is slower than just doing it? Especially in vim where editor movements are fast.

        • By jnpnj 2026-03-149:261 reply

          Anybody using cursor or antigravity ?

          I tried them a bit and often they can infer immense amount of ideas from the immediate source context and suggest paragraph patches semantically close to what I had in mind from just one word.

          Saying this as a vi/emacs user who liked to automate via macros, snippets, dynamic overlay inserts and what not.. I still enjoy being sharp on a keyboard and navigating source / branches swiftly but LLM can match and go beyond it seems. (not promoting them, feel free to stay in good old vi command sequences if that's fun for you)

          • By armchairhacker 2026-03-1411:43

            I’m using Sweep autocomplete, which is like Cursor’s but in JetBrains, and it’s very good. Most of the time, I start the change and Sweep finishes it. Sometimes for larger changes, it initially has the wrong idea, but as I continue it eventually figures out what I’m doing.

            Unfortunately they’re sunsetting it, ironically apparently because people aren’t using it. I think it’s strange this hasn’t been posted to HN. They say they will release an open-source local version; otherwise I’ll have to figure out an alternative, because it really saves time and effort…

        • By keithnz 2026-03-149:111 reply

          possibly there's cases where maybe you want to change some text or something, but I don't think its faster in vim given you likely don't have that file open, and by the time you get to the file, and location, you could have fixed it with your agent, not only that, you could have generated the test case and then fixed in your agent

          • By 1718627440 2026-03-149:541 reply

            I think you missed the point. It takes more time to write English prose than to open a file and just fix it, so unless the time the LLM needs is somehow negative, it's not going to be faster.

            • By keithnz 2026-03-1410:222 reply

              I didn't miss the point, it just feels like the people saying that really aren't using these tools as it just is not my experience at all. I've been a Vim user for multi decades now. There's just no way, it's far easier to type a prompt except maybe if you know exactly what file and exactly where in the file, you might be able to do it as fast as telling the AI to do it. It's not hard to get a minor fix done with a prompt and doesn't take too much English in my experience.

              • By jakobobobo 2026-03-1413:58

                If you ask to do a fix you need to read/verify what is done. If you are confident with your editor you go through long amounts of actions knowing your error rate is low enough to use less visual feedback loops.

                I'd be curious how one gets to the error rate where they don't think they need feedback loops. Anyone can learn to touch type because the physics are deterministic and can expand from that to touch edit in something that isn't hopelessly WYSIWYG only.

              • By skydhash 2026-03-1411:57

                Maybe it’s hormones, but time flies when you do edit with Vim or Emacs. It’s like playing on a piano. But using AI is like listening critically to someone playing trying to find mistakes. And that’s boring as hell.

        • By zhann_dc 2026-03-149:02

          I'd argue you should be working towards no longer having to do these because agentic systems in place will do it in your stead.

          All you need to do now, is sign off the code and adjust the agent so it would do these as you would.

      • By bandrami 2026-03-148:271 reply

        You're forgetting to count the time you spend deleting the excess stuff

        • By keithnz 2026-03-148:521 reply

          no... I'm not.

          • By bandrami 2026-03-1412:08

            Then you're forgetting the time your sysadmin spends doing that

      • By otabdeveloper4 2026-03-1410:21

        Note you're replying to a guy who never said anything at all about being "faster".

        P.S. Software developers aren't being paid to be "fast". In fact, being "fast" is called "technical debt" and you're usually punished for it as a software developer.

    • By mvanbaak 2026-03-1412:32

      I'm a vim user. for decades. Your post does not align at all with my experience.

      If you prompt and hand-hold the LLM it is a big help. Things like boilerplate, basic crud etc etc is something I dont have to worry about anymore. And if I am looking at an unknown codebase or area, the llm can explain things to me, it's the rubber duck that talks back.

      I'm not using vim plugins (yet) for LLM, tmux and a couple of panes etc is all I need at the moment.

    • By cholantesh 2026-03-1417:40

      The only thing that I find AI is consistently excellent at is giving me a snippet to do something particularly esoteric in my shell and parsing out errors from a massive logfile that I would probably have taken an order of magnitude longer to find myself.

  • By mark_l_watson 2026-03-1411:441 reply

    Nice writeup! The list of Emacs packages to use LLMs is the roadmap for getting started with AI Emacs integrations and I also liked his list of AI dangers at the end.

    I have used Emacs for over 40 years but I found myself getting sucked into the black hole of VSCode as discussed in the article. When I bought a new MacBook a few months ago, I only installed Emacs, no VSCode, and so far that is working out for me.

    Also, after many hours of experimenting with AI packages for Emacs, I have reverted to keeping Emacs mostly a pure human activity, and several times a week have sessions with gemini-cli and Claude Code when I want an AI coding assistant. This is just for me, not general advice, but I like to separate use of AI from my regular coding and writing workflows. I use AI for coding cumulatively about three or four hours a week.

    • By reddit_clone 2026-03-1415:05

      I am reduced to keeping Emacs and VSCode open on the same files/project :-) Use the LLM from VSCode and switch back to Emacs for regular editing!

      Currently trying out various Emacs packages. I got 'claude-code.el' actually working. But there is some flickering and also the interface is a bit wonky.

      I will try other packages mentioned in the article.

      For the life of me, I can't _edit_ with VSCode. My Emacs/Doom/Evil muscle memory is too ingrained.

HackerNews