Orbiton
Snappy and configuration-free text editor/IDE for the terminal. Suitable for writing git commit messages, editing Markdown, config files, source code, man pages and for quick edit-format-compile cycles when programming. Has syntax highlighting, jump-to-error, rainbow parentheses, macros, cut/paste portals, LSP support and a simple gdb+dlv frontend.
Install / Use
/learn @xyproto/OrbitonREADME
![]()
Orbiton is a text editor and a simple IDE with the following leading principles:
- Minimal annoyance (within the limits of
VT100) - Not be configurable, to help users stay focused (with the exception of themes)
- Facilitate rapid edit-format-compile-run cycles
Please submit a PR if anything can be improved to help adhere to these.
Orbiton might be a good fit for:
- Writing git commit messages (using
EDITOR=o git commit). - Editing
README.mdandTODO.mdfiles. - Writing Markdown and then exporting to HTML or PDF.
- Learning programming languages, like Rust or Zig.
- Editing files deep within larger Go or C++ projects.
- Solving Advent of Code tasks.
- Being placed on a live image for a Linux or BSD distro, since it is limited by VT100, is small and self-contained, has a built-in log, man page and image viewer, has an optional nano/pico mode, comes with a
visudoreplacement (osudo) and has built-in support for neatly formatting/etc/fstabfiles. - Writing any number of words in a distraction-free fullscreen environment (toggle the status bar by pressing
ctrl-gto see the word count).
This has been my main editor for around 4 years now (since early 2022), and it is mostly written in itself, apart from some NeoViM in the early beginning.
Screenshots
Screenshot of the VTE GUI application (that can be found in the gtk3 directory), running the o editor:

Stepping through the assembly instructions of a Rust program by entering debug mode with the ctrl-o menu and then stepping with ctrl-n:

Editing a C source file in og using the "synthwave" theme:

There are also light themes available:


Writing commit messages:

Packaging status
| orbiton |
|--------------------------------------------------------------------------------------------------------------------------------|
| |
Quick start
With Go 1.24 or later, the development version of o can be installed like this:
go install github.com/xyproto/orbiton/v2@latest && mv -i ~/go/bin/orbiton ~/go/bin/o
Adjust the mv flags and the ~/go/bin path as needed. Perhaps go install will have an -o flag in the future.
Alternatively, download and install a release version. For example, for Raspberry Pi 2, 3 or 4 running Linux:
curl -sL 'https://github.com/xyproto/orbiton/releases/download/v2.73.0/orbiton-2.73.0-linux_armv7_static.tar.xz' | tar JxC /tmp && sudo install -Dm755 /tmp/orbiton-2.73.0-linux_armv7_static/o /usr/bin/o && sudo install -Dm644 /tmp/orbiton-2.73.0-linux_armv7_static/o.1.gz /usr/share/man/man1/o.1.gz
Setting o as the default editor executable for git
To set:
git config --global core.editor o
To unset:
git config --global --unset core.editor
Viewing man pages
By setting the MANPAGER environment variable, it's possible to use o for viewing man pages:
export MANPAGER=o
An alternative to viewing man pages in o is to use less:
export MANPAGER='less -s -M +Gg'
Setting up o on OpenSUSE
Install o manually, until an OpenSUSE package exists:
git clone https://github.com/xyproto/orbiton
cd orbiton
make && sudo make install
The following is not strictly needed, but it sets everything up to make full use of o:
Add this to ~/.alias:
alias o=/usr/bin/o
Add this to ~/.profile:
export MANPAGER=/usr/bin/o
export EDITOR=/usr/bin/o
Log out and in again to activate the changes.
Unique features
These features are unique to o, as far as I am aware:
- If the loaded file is read-only, all text will be red by default.
- Smart cursor movement, trying to maintain the X position when moving up and down, across short and long lines.
- Press
ctrl-vonce to paste one line, pressctrl-vagain to paste the rest. - Press
ctrl-conce to copy one line, pressctrl-cagain to copy a block of lines (until a blank line), pressctrl-cagain to copy the current function. - Open or close a portal with
ctrl-r. When a portal is open, copy lines across files (or within the same file) withctrl-v. - Build code with
ctrl-spaceand format code withctrl-w, for a wide range of programming languages. - Cycle git rebase keywords with
ctrl-worctrl-r, when an interactive git rebase session is in progress. - Jump to a line with
ctrl-l. Either enter a number to jump to a line or just pressreturn(ort) to jump to the top. Pressctrl-landreturnagain (orb) to jump to the bottom. Presscto jump to the center. - When jumping to a specific line in a file with
ctrl-l, jumping to a percentage (like50%) or a fraction (like0.5or.5) is also possible. It is also possible to jump to one of the highlighted letters. - If tab completion in the terminal went wrong and you are trying to open a
main.file that does not exist, butmain.cppandmain.odoes exists, thenmain.cppwill be opened. - Search by pressing
ctrl-f, entering text and pressingreturn. Replace by pressingtabinstead ofreturn, then enter the replacement text and pressreturn. Searching for unicode runes on the formu+0000is also supported. - Type
iferron a single line in a Go or Odin program and pressreturnto insert a suitableif err != nil { return ... }block, based on koron/iferr. - Use the built-in Markdown table editor by pressing
ctrl-twhen the cursor is on a table. This works best for tables that are not too wide. - Format Markdown tables by moving the cursor to a table and pressing
ctrl-w. - For C-like languages, missing parentheses are added to statements like
if,forandwhilewhen return is pressed. - Pressing
ctrl-ftwice searches for the word under the cursor. - Lines are highlighted only when the up and down arrow keys are used.
- The name of the function that the cursor is within, is shown in the upper right corner of the screen, for some programming languages.
Other features and limitations
- The syntax highlighting is instant.
- Opens files quickly.
- Can compile
"Hello, World"in many popular programming languages simply by pressingctrl-space. - Create, build and run a simple program in C, by running
o main.c, pressingctrl-wand then a doublectrl-space. - Configuration-free, for better and for worse.
- Can preview
.png,.jpg,.jpeg,.gif,.icoand.bmpimages directly in the terminal (using a scaled down version and up to 16 colors). - The
-pflag followed by a filename can be used for just pasting the clipboard to a new file, instead of editing a file. ctrl-tcan jump between a C++ header and source file, when editing C++ code.ctrl-tshows the Markdown table editor, when editing Markdown and the cursor is on a Markdown table.- Can only edit one file at the time, by design.
- Provides syntax highlighting for Go, Rust, C++, Markdown, Bash and several other languages. There is generic syntax highlighting built-in.
- Will jump to the last visited line when opening a recent file.
- Is provided as a single self-contained executable.
- Loads faster than both
vimandemacs, for small files. - Can render text to PDF either by itself or by using
pandoc. - Tested with
alacritty,konsole,st,urxvt,xfce4-terminal,xtermandzutty. - Tested on Arch Linux, Debian, OpenSUSE, macOS, FreeBSD and OpenBSD.
- Never asks before saving or quitting. Be careful.
- The
NO_COLORenvironment variable can be set to disable all colors. - Rainbow parentheses makes lines with many parentheses easier to read.
- When limited to vt100 or vt220, hotkeys like
ctrl-aandctrl-emay need to be used instead ofHomeandEnd. And for browsing up and down,ctrl-nandctrl-pmay be used. - Will strip trailing whitespace whenever it can.
- Usually expects to be given a filename at start.
- Has smart indentation.
- Requires that
/dev/ttyis available. xclipfor X,wl-clipboardfor Wayland orpbcopyfor macOS needs to be installed to access the system clipboard.- May take a line number as the second argument, with an optional
+or:prefix. - If the filename is
COMMIT_EDITMSG, the look and feel will be adjusted for git commit messages. - Supports
UTF-8. (Requires a terminal emulator that supports unicode to be able to display unicode runes, though). - Only UNIX-style line endings are supported (
\n). - Will convert DOS/Windows line endings (
\r\n) to UNIX line endings (just\n), whenever possible. - Will replace non-breaking space (
0xc2 0xa0) with a regular space (0x20) whenever possible. - Will replace annoying tilde (
0xcc 0x88) with a regular tilde (~) whenever possible. - Will replace the greek question mark that looks like a semicolon (
0xcd 0xbe) with a
Related Skills
himalaya
329.0kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
xurl
329.0kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
coding-agent
329.0kDelegate coding tasks to Codex, Claude Code, or Pi agents via background process
tavily
329.0kTavily web search, content extraction, and research tools.
