
Russ Cox
11 HN recommenders · recommended in 19 months, 2012–2026
23:16 · 151K views · Sep 17, 2012
Russ Cox gives a 23-minute tour of the Acme text editor from Plan 9, showing its mouse-driven interface, executing commands from text, and its filesystem-based interface to other programs.
HN points people to it as the best introduction to Acme and its very different take on editors, shells, and GUIs.
20 comments from Hacker News
Rob Pike's acme text editor for the Plan 9 operating system: [LINK] this video (excellent overview of the editor by Russ Cox) And acme's predecessor sam: [LINK] You'll need plan9port to run acme on Linux, though. But the core ideas are very simple and powerful (sam: everything is a huge string; acme: everything is a clickable file) and thus hopefully long-lasting. I would also mention edbrowse, a line-oriented web browser initially for blind people. Maybe this is too far on the fringe, though. It does have a lot of depth (excellent scripting capabilities); it's an amazing project actually: [LINK]
It's sad that Acme hasn't been mentioned at all. While its mouse-oriented nature is a little strange coming from Vim, there are some very awesome ideas in it. For one: It lets you write plugins in anything you like. This is because all aspects of the editor are exposed as a filesystem a la /proc. Need to create a new window with some custom contents? Create a new file. Other awesome ideas: The text in that custom window can be actions because any text can invoke commands by using another mouse button. Russ Cox has a great video tour of Acme's features here: this video
On tmux, I use split panels more often than tabs. Usually, there will be from 2 to 8 panels of different sizes. This gives me spacial short term memory: I know what each shell is by the panel position. I can zoom on then to bring them full screen (ctrl+b z) if I'm going to do anything that requires more space, then zoom out to the panel arrangement when I'm done. Sometimes I'll name prompts (eg `PS1='stg$ '`), specially when working with ssh, but that's rare. What inspired me to work this way was this video on the acme editor: this video
It still strikes me that after all this time, the next step in the direction of the author is to use an editor like ACME ( [LINK] ): use the shell to its maximum power, where the output of a command can be edited and used to control the existing interface. Take for instance this video: [LINK] The author shows how the output of "git status" is just a text, you can modify the text and add "git add" just in front of the files you care about and add the file to the index. There is no linear loop of command input that becomes command output, it's all one big buffer that can feed itself. Consider how there could be another window that perpetually shows the status thanks to a combination of inotify and git status, and you have a git view. Fiddle with the command line argument and you can choose wether to show whitespaces or not, whether to show a summary view or the full diff, or restrict the list to some files. Have another window where you can write some message, and a GitCommit command in the "Tag" of the window will use the whole buffer as a git commit message; boom, you have 60% of what I use git-cola for. A bit more information can be seen by one of its creator here: this video . The possibilities are truly endless, and I haven't seen anything that resembles it. There is just no editor that embraces your platform the way Acme does. No, Emacs is not the same, because Emacs doesn't integrate with your OS; Emacs is an OS unto itself. You can't really say it's integrated to the OS wh
Pretty close to what you describe is Acme [0] the text editor/shell from Plan 9. It is mouse oriented edit. You can right click on words to search them in file or open text files, directories or compiler errors. I recommend viewing this [1] introduction video. I miss few things in Acme. A bit more WIMP-y familiarity and a 3 button mouse. That's why I'm working on experimental text editor inspired by Acme [2]. [0] [LINK] [1] this video [2] [LINK]