sie

v0.19.0

The editor that doesn’t get in your way

sie stands for siMPLE eDITOR. A small, modeless terminal editor in Go: open a file, type, save. One static binary for Linux, macOS and Windows, with no C dependencies.

Everything in reach, nothing to learn first

Three ways to run any command: a shortcut, the menu bar, or the prompt. The prompt always shows the shortcut, so you pick them up as you go. Each demo below plays when you scroll to it.

Modeless

No modes and no leader keys. Arrows, Ctrl+S and Ctrl+Z work the way you expect, and so does the mouse.

Ctrl+S save · Ctrl+Z undo · Ctrl+Y redo

Command prompt

Press Ctrl+Alt+P and type part of any command: goto 42, find foo, trim sel. Matching is fuzzy, shortcuts are shown, and your recent commands come first. Every command also lives in the menus (Ctrl+Alt+M).

Ctrl+Alt+P prompt · Ctrl+Alt+M menus

Open recent

Ctrl+E lists the files you opened or saved, newest first. Type a few letters of the path to filter them, and Enter opens the best match.

Ctrl+E open recent · Ctrl+O open

Multiple cursors

Alt+click adds a cursor, and Alt+drag (or column mode, Ctrl+U) selects a rectangle. Typing, Backspace, Delete, paste and undo then act on all of them at once.

Alt+click add a cursor · Alt+drag rectangle · Ctrl+U column mode

Mouse that helps

Double-click selects a word and triple-click a line. Drag afterwards to extend by whole words or lines. Shift+click extends a selection, and the wheel scrolls.

double-click word · triple-click line

Live search

Ctrl+F searches as you type. The view jumps to the nearest match from where you started and every other visible match is underlined. Backspace searches again from the start point, Esc puts the cursor back, and Enter keeps the match. Ctrl+P F / B go to the next / previous one.

Find and replace

Ctrl+R asks what to replace and with what, then asks about each match: y, n, a (all) or q (quit). The whole session is one undo step. replace all a b in the prompt does it in one go.

Ctrl+F find (as you type) · Ctrl+R replace

Validation

Ctrl+T checks JSON, YAML, TOML and XML and jumps to the first problem with its line and column. Saving a broken file asks first: validate, save anyway, or cancel.

Ctrl+T validate

Syntax highlighting

Every language chroma knows, chosen by file name. Coloring runs in the background, so typing never waits for it. Turn it off, or pick the language yourself, from the View menu or the prompt.

language yaml · View → Syntax highlighting

Careful with your files

LF and CRLF endings are kept, a BOM is kept, and invalid UTF-8 never corrupts a file: the bytes round-trip unchanged. Saves are atomic, and the cursor moves by grapheme, not by byte.

UTF-8 · BOM · LF / CRLF

Visual helpers

Two optional effects: a click ripple that shows where you clicked, and an indent guide that flashes when a line's indent moves, to see what it lines up with. Great for Python and YAML.

click_ripple · indent_guide

Column ruler and wrapping

The top row of the editor is a column ruler. Its numbers move when you scroll sideways, so you always know which column you are on. Turn on Wrap lines to see long lines in full: they continue on the next row, marked with a faint ↳, and the ruler gives its row back.

Ctrl+P O ruler · Ctrl+P Z wrap · column_ruler · wrap

Split view

See two places of the same file at once. Split view stacks two panes, each with its own scroll position and column ruler, so you can keep a definition in view while you edit where it is used. It is still one document with one cursor: click a pane or press Ctrl+P 2 to move the cursor there, and every edit shows up in both. The panes are always the same height, and on a very small terminal the split steps aside until there is room.

Ctrl+P X split · Ctrl+P 2 switch pane · split

Large files

Files over 32 MB are not loaded into memory: sie keeps them on disk and reads only the part you are looking at. A 1 GB log opens in about 0.2 seconds using a few MB of RAM, and editing, undo, find, replace and save all work. Saving streams to a temporary file and swaps it in, and if another program changes the file meanwhile, sie asks you to reload or quit instead of overwriting it.

Above the limit (large_file_size) validation is skipped and copying more than 64 MB is refused, each with a clear message.

Ctrl+End end of file · Ctrl+G go to line · Ctrl+F find

Work with an AI agent

sie mcp lets an agent such as Claude Code work on the buffer you have open, unsaved changes included. You both edit the same text and see every change as it happens. Register it once with claude mcp add sie -- sie mcp.

You stay in charge: the agent must ask first (y yes, n no, a always), each edit is one undo step, and it can't save, quit or open files. An edit based on text you have since changed is refused. The socket is private to your user (~/.sie/sock, no network port) and is available on Linux and macOS.

Ctrl+P D detach the agent · mcp · SIE_MCP=false

One binary

Pure Go with CGO_ENABLED=0: one static file for Linux, macOS and Windows on amd64 and arm64. No runtime, no libraries, nothing to install on the server.

Linux · macOS · Windows · amd64 · arm64

Install

Latest release: v0.19.0.

Homebrew macOS, Linux

brew install --cask avero-it/tap/sie

Scoop Windows

scoop bucket add avero-it https://github.com/avero-it/scoop-bucket
scoop install sie

apt Debian, Ubuntu · amd64, arm64

sudo curl -fsSL https://avero-it.github.io/sie/sie.gpg -o /usr/share/keyrings/sie.gpg
echo "deb [signed-by=/usr/share/keyrings/sie.gpg] https://avero-it.github.io/sie stable main" | sudo tee /etc/apt/sources.list.d/sie.list
sudo apt update && sudo apt install sie

The repository is signed and updated with every release; after that, sudo apt upgrade keeps sie current.

deb, rpm, apk Linux packages

Download from the releases page, then:

sudo apt install ./sie_<version>_linux_amd64.deb
sudo dnf install ./sie_<version>_linux_amd64.rpm
sudo apk add --allow-untrusted ./sie_<version>_linux_amd64.apk

Go Go installed

go install github.com/avero-it/sie/cmd/sie@latest

Binaries

Pick the archive for your platform on the releases page, unpack it and put sie (sie.exe on Windows) on your PATH. SHA-256 sums are in checksums.txt. On macOS, allow a browser-downloaded binary once:

xattr -d com.apple.quarantine ./sie

Keys

Start with sie [file]. Hold Shift with any movement key to select.

KeyCommand
Ctrl+NNew
Ctrl+OOpen
Ctrl+EOpen recent (fuzzy search)
Ctrl+SSave
Ctrl+WClose file
Ctrl+QQuit
Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+X C VCut / Copy / Paste
Ctrl+ASelect all
Ctrl+TValidate (JSON, YAML, TOML, XML)
KeyCommand
Ctrl+FFind
Ctrl+RReplace… (asks y/n/a/q per match)
Ctrl+GGo to line
Ctrl+DDuplicate line
Ctrl+KDelete line
Ctrl+LSelect line
Ctrl+/Toggle comment
Ctrl+UColumn selection (on/off)
Ctrl+Alt+PCommand prompt
Ctrl+Alt+MMenus
EscBack to the editor

Every other command is a chord: press Ctrl+P, then a letter. Ctrl+P L trims leading spaces, Ctrl+P T trailing ones, Ctrl+P P / Ctrl+P N align the line to the previous / next one, Ctrl+P A is Save as, Ctrl+P F / B find next / previous, Ctrl+P U / J move the line up / down, Ctrl+P V / Q select the next / previous occurrence, Ctrl+P M toggles comments (as Ctrl+/). Ctrl+P Z wraps long lines, Ctrl+P O toggles the column ruler. Ctrl+P X splits the view into two panes and Ctrl+P 2 switches between them. Ctrl+P D detaches an AI agent (MCP). Shift+Tab outdents and Alt+Backspace deletes a word. The full list is in the README.

Move by word with Alt+←/→ or Ctrl+←/→, by jump_lines lines with Alt+↑/↓, to the line ends with Home/End and to the file ends with Ctrl+Home/End. Add a cursor with Alt+click.

Configuration

sie reads /etc/sie/config.yaml and then ~/.sie/config.yaml; keys in your file win. SIE_* environment variables override both. sie config prints the effective settings.

tab_width: 4            # 1–16
show_invisibles: false  # mark spaces (␣) and tabs (»)
show_empty_cells: true  # mark cells holding no character (·)
click_ripple: false     # a wave animation on every click in the text
indent_guide: false     # briefly show a vertical guide when a line's indent moves
wrap: false             # wrap long lines instead of scrolling sideways
split: false            # two stacked panes onto the same document
column_ruler: true      # column numbers on the first text row (not while wrapping)
line_ending: lf         # for new files: lf or crlf
jump_lines: 5           # lines moved by Alt+↑/↓ (1–100)
syntax_highlighting: true
syntax_max_size: 2MB    # larger files are not colored
validate_on_save: true  # check JSON/YAML/TOML/XML before saving
mcp: true               # open the local socket that `sie mcp` talks to (SIE_MCP=false turns it off)
large_file_size: 32MB   # larger files stay on disk and are read as needed

Terminal notes

  • macOS: Ctrl+Alt and Alt+click need Option to act as Meta (Terminal.app: Use Option as Meta key; iTerm2: Left Option key = Esc+).
  • Windows: Ctrl+Alt is AltGr on many layouts; sie types the character unless that exact combination is bound.
  • Clipboard: copy goes through the terminal (OSC 52, also over SSH) and the native clipboard.