acme/acme2k: A lesson in sane IDE defaults.
Tags: acme, acme2k, texteditor, ide
Published: 2018-08-13 14:43:55

---
title: acme/acme2k: A lesson in sane IDE defaults.
published: true
description: How to be productive without using the keyboard for anything else than your actual code.
tags: acme,acme2k,text editor,ide
---

If your IDE requires you to use the keyboard for switching between "modes" instead of just letting you *type your code*; if your IDE has more colors than your television; if you find yourself *configuring* your IDE more than once a week: your IDE is probably not the one you should use.

I have commented that I like the [*acme*](http://acme.cat-v.org/) (resp. the slightly more flexible [*acme2k*](https://github.com/karahobny/acme2k)) IDE under some recent articles. Let me explain shortly why I like it. I won't waste your time by explaining the installation process here. If you are on Windows (or Debian Linux), you might be interested in my lengthy article on [DonationCoder](https://www.donationcoder.com/forum/index.php?topic=45547) about just that, including some Plan 9 history.

What follows is a screenshot of my minimalistic *acme2k* setup at work. I usually use Acme's default (yellow/blue) colors instead.

![Yep, I made a typo in the first draft. Can you spot it?](https://thepracticaldev.s3.amazonaws.com/i/662p4p4f8iwq6iytpej6.png)

As you can see, *acme* is not your typical IDE: No giant buttons get in your way, no wonderful colors make you think a unicorn had puked into your computer, there is no "intellisense", no "syntax highlighting" (which is [a good thing](http://www.linusakesson.net/programming/syntaxhighlighting/)), no obvious integration of compilers, linters et cetera - but in fact, you can integrate any tool, any compiler, even a shell *right inside Acme*.

{% youtube dP1xVpMPn8M %}

**However**, two things are entirely different from Vim, Emacs, Atom, VS Code, Sublime Text or whatever "IDE" or GUI text editor you might or might not use:

1. **There are no configuration files.**

	Why would you need them? As Acme can interact with everything that is "executable", you could easily write an application which interacts with everything inside the editor window. There are people who [already prepared that](https://github.com/evbogdanov/acme) for you.
	
	**Your advantage:** You won't waste time configuring (or: *misconfiguring*) Acme until it fits you. You just can't.
	
	**Your disadvantage:** If you don't like the defaults, Acme is not for you. (*acme2k* adds themes though - to be configured at compile time.)
	
2. **The mouse is your command mode.**

	Just like `vi` and its spiritual successors (and, to a lesser extent, "modern" editors which have `Ctrl` key chords for their "command mode"), Acme has an "insert mode" and a "command mode". However, Acme is different in one important aspect: Anything that is not directly related to typing text into your current buffer needs to be done with the mouse, either with mouse chords or with middle-clicking the matching command in the toolbar.

	*FAQ:* "Wouldn't that slow you down?" - No, not really. Being a productive developer, you probably spend most of the time writing new code instead of changing existing code. Even if you need to do that, clicking directly where you want to type is notably easier than instructing your cursor to go two lines up, five columns to the right and then enter the Insert mode.

	**Your advantage:** You'll have a clear distinction between *editing text* and *handling your buffer*. The latter is done without your keyboard. (*acme2k* adds a couple of key bindings to make it easier for those who come from other editors though.)

	**Your disadvantage:** You'll need to open your mind a bit. This is not like "moving from Sublime Text to Atom", this is like "moving from an IBM PC to a PlayStation". You need to forget everything you knew about using an IDE. But there is a chance that this is *exactly* what you needed - just because *other people* are *fast* with their keyboard-controlled IDE, that does not mean that *you* will be too.

I will probably reference this article in the future. I hope that anyone cares at all.