neo

April 3, 2026 ยท View on GitHub

neo is a terminal-native, extensible code editor written in Go.

It combines a custom text buffer engine, syntax highlighting, tabbed editing, dockable panels, built-in terminal emulation, and Git tooling in a single TUI application.

Highlights

  • Fast text editing core with undo/redo, selections, multi-line operations, and bracket-aware navigation.
  • Extension-based architecture for commands, keybindings, menus, and panels.
  • Syntax highlighting powered by Chroma with configurable themes.
  • Integrated autocomplete (document words, language keywords, snippets, and paths).
  • Search stack: incremental find, replace, search in open tabs, and find-in-files.
  • Code folding with fold levels, fold region detection, and open/close controls.
  • Git integration: log view, working/staged diffs, and ref-to-ref diff.
  • Workspace UI tooling: file tree, quick open, tab switcher, markdown preview, search results panel.
  • Session persistence (restore tabs, cursor position, scroll state) and MRU history.
  • External file change watching with reload prompts.
  • Image viewing support, including Sixel rendering helpers for capable terminals.
image

Git Log / Diff and many other features

image

Getting Started

Prerequisites

  • Go 1.25+
  • A terminal with mouse support recommended
  • git on PATH (for Git features)

Build

go build -o neo .

Run

# Open editor
./neo

# Open a file directly
./neo path/to/file.go

# Pick a syntax theme
./neo --theme dracula path/to/file.go

Common Shortcuts

  • Ctrl+N: new file
  • Ctrl+O: open file
  • Ctrl+S: save
  • Ctrl+W: close tab
  • Ctrl+Q: quit
  • Ctrl+P: quick open
  • Ctrl+F: find
  • Ctrl+H: replace
  • Ctrl+Shift+F: find in files
  • Ctrl+Space: autocomplete
  • Ctrl+B: toggle file tree
  • `Ctrl+``: open terminal tab
  • Ctrl+Shift+G: Git log
  • F2: toggle bookmark
  • F9: open settings

Configuration

neo stores user settings as JSON.

  • Windows: %APPDATA%/neo/settings.json
  • macOS: $HOME/Library/Application Support/neo/settings.json
  • Linux: $XDG_CONFIG_HOME/neo/settings.json (or $HOME/.config/neo/settings.json)