SkillAgentSearch skills...

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/Orbiton

README

Orbiton Logo

Build Go Report Card License FOSSA Status

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.md and TODO.md files.
  • 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 visudo replacement (osudo) and has built-in support for neatly formatting /etc/fstab files.
  • Writing any number of words in a distraction-free fullscreen environment (toggle the status bar by pressing ctrl-g to 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:

screenshot

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

debug rust

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

synthwave theme

There are also light themes available:

vs theme

light theme

Writing commit messages:

git

Packaging status

| orbiton | |--------------------------------------------------------------------------------------------------------------------------------| | Packaging status |

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-v once to paste one line, press ctrl-v again to paste the rest.
  • Press ctrl-c once to copy one line, press ctrl-c again to copy a block of lines (until a blank line), press ctrl-c again 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) with ctrl-v.
  • Build code with ctrl-space and format code with ctrl-w, for a wide range of programming languages.
  • Cycle git rebase keywords with ctrl-w or ctrl-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 press return (or t) to jump to the top. Press ctrl-l and return again (or b) to jump to the bottom. Press c to jump to the center.
  • When jumping to a specific line in a file with ctrl-l, jumping to a percentage (like 50%) or a fraction (like 0.5 or .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, but main.cpp and main.o does exists, then main.cpp will be opened.
  • Search by pressing ctrl-f, entering text and pressing return. Replace by pressing tab instead of return, then enter the replacement text and press return. Searching for unicode runes on the form u+0000 is also supported.
  • Type iferr on a single line in a Go or Odin program and press return to insert a suitable if err != nil { return ... } block, based on koron/iferr.
  • Use the built-in Markdown table editor by pressing ctrl-t when 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, for and while when return is pressed.
  • Pressing ctrl-f twice 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 pressing ctrl-space.
  • Create, build and run a simple program in C, by running o main.c, pressing ctrl-w and then a double ctrl-space.
  • Configuration-free, for better and for worse.
  • Can preview .png, .jpg, .jpeg, .gif, .ico and .bmp images directly in the terminal (using a scaled down version and up to 16 colors).
  • The -p flag followed by a filename can be used for just pasting the clipboard to a new file, instead of editing a file.
  • ctrl-t can jump between a C++ header and source file, when editing C++ code.
  • ctrl-t shows 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 vim and emacs, for small files.
  • Can render text to PDF either by itself or by using pandoc.
  • Tested with alacritty, konsole, st, urxvt, xfce4-terminal, xterm and zutty.
  • Tested on Arch Linux, Debian, OpenSUSE, macOS, FreeBSD and OpenBSD.
  • Never asks before saving or quitting. Be careful.
  • The NO_COLOR environment 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-a and ctrl-e may need to be used instead of Home and End. And for browsing up and down, ctrl-n and ctrl-p may be used.
  • Will strip trailing whitespace whenever it can.
  • Usually expects to be given a filename at start.
  • Has smart indentation.
  • Requires that /dev/tty is available.
  • xclip for X, wl-clipboard for Wayland or pbcopy for 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

View on GitHub
GitHub Stars648
CategoryCustomer
Updated2d ago
Forks19

Languages

Go

Security Score

100/100

Audited on Mar 19, 2026

No findings