Skip to content
sorryccPublic

About

A small, fast code editor written in Go, with a native GPU-drawn UI (no webview, no Electron)

Topics

Resources

Contributing

Stars

199 stars

Watchers

0 watching

Forks

Repository files navigation

Mayoi icon

Mayoi

迷い — a small, fast code editor written in Go. It draws a native UI on the GPU with MyGo, with no webview and no Electron, and the packaged app is about 18 MB.

mayoi-motion-graphics.mp4

Features

  • Editor: tabs, Chroma syntax highlighting, indent guides, sticky scroll, breadcrumbs and word wrap
  • Smart editing: auto-indent, auto-closing brackets and quotes, line commands, and per-tab undo
  • Vim mode: normal, insert and visual modes, with motions, operators, text objects, counts and ., registers, macros, marks, search, and : commands as :s, :g and :normal
  • Columns: split the editor side by side and drag tabs between columns
  • Explorer: a live file tree that follows the disk and dims Git-ignored files
  • Quick open: fuzzy file search, go to line (:42), go to symbol (@) and a command palette (>, ⇧⌘P)
  • Find and replace: case, whole-word and regex matching, searched in the background in large files
  • Search: find and replace across the folder's files (⇧⌘F, ⇧⌘H), with files to include and exclude, and a preview of each replacement
  • Git: a source control view to stage, commit, amend, undo, pull and push, every change in one diff, folded around the changes, inline or side by side, a graph of the commits with their branches and tags, each with its own diff, gutter marks that revert or stage a change, branches and blame
  • Terminal: Ghostty's emulator (libghostty-vt), in the bottom panel, at a side of the window, or in a tab
  • Remote SSH: open a folder on another machine with the system's ssh, nothing installed there: the Explorer, search, Git and terminals run on the host, and its ports forward to this machine
  • Image viewer: PNG, JPEG, GIF, WebP and BMP
  • Previews: a live preview of Markdown and SVG beside the source (⇧⌘V)
  • Windows: a window per folder or every folder in one window as project tabs, a welcome page with the recent folders and hosts, Open Recent (⌃R), and a mayoi shell command
  • Themes: light and dark, The Matrix with digital rain, and Claude and Qoder, each in light and dark
  • Auto save, and every window reopened as you left it, with its columns, tabs and carets
  • Settings: JSON files applied as you save them, with the code's and the terminal's fonts, weight, ligatures and line height, and keyboard shortcuts in VS Code's format (see docs/SETTINGS.md)
  • AI commit messages: signed in, write the commit message from the changes with Mon's AI gateway
  • Settings sync: sign in with GitHub or Google, and your settings and keyboard shortcuts follow you between machines

See docs/FEATURES.md for the details, docs/ARCHITECTURE.md for a tour of the source and how fast it runs, and CONTRIBUTING.md to build, test and release Mayoi.

Tour

Columns: split the editor and drag tabs between columns
Two columns of Go source
Vim mode: motions, operators, text objects and visual mode
Lines selected in Vim's visual mode
Peek a change: click a gutter mark to see the lines at HEAD, then revert or stage them
A change peeked from the gutter
Side-by-side diff: every change in one tab, with changed words tinted
Source control with a side-by-side diff
Commit graph: branches, tags and merges, and each commit's changes in a tab
The commit graph and a commit's diff
Markdown preview: live beside the source
A Markdown file and its preview
Terminal: Ghostty's emulator in the panel or, here, in a tab
A terminal in a column beside the code
Command palette: every command by name, with its shortcut
The command palette
Search in files: as you type, with each match in context
Search across the folder's files
Project tabs: every folder in one window, on a rail
Projects on a rail at the left of the window
Remote SSH: the Explorer, Git, search and terminals on the host, and its ports here
A folder open on an SSH host
The Matrix: one of the themes, with the whole window in the code's font
The Matrix theme

Requirements

  • macOS 13 or later, or Linux with GTK 3, such as Ubuntu 22.04 or later
  • Go 1.27 or later

Mayoi also builds for Windows.

On Linux, curl -fsSL https://github.com/sorrycc/Mayoi/releases/latest/download/install.sh | sh installs the latest release for you in ~/.local, with the mayoi command and an entry in the applications menu.

Getting started

go run ./cmd/mayoi ~/some/project    # open a folder or a file
go tool mygo build                   # build build/darwin-arm64/Mayoi.app and a .dmg

To open folders from a shell, choose File → Install 'mayoi' Command (on Linux the installer adds it), then run mayoi . or mayoi <file>.

Keyboard shortcuts

Shortcut Action
⌘P / ⇧⌘O / ⌃G Quick open / go to symbol / go to line
⌘F / ⌥⌘F / ⌘G Find / replace / next match
⇧⌘F / ⇧⌘H Find in files / replace in files
⌘S / ⇧⌘S / ⌥⌘S Save / save as / save all
⌘O / ⌥⌘O / ⌃R Open folder / open folder in a new window / open recent
⌘N / ⌘W / ⌘1…9 / ⌃Tab New file / close tab / go to tab / next tab
⇧⌘] / ⇧⌘[ / ⌃⌘1…9 Next / previous / go to project, with project tabs
⌘\ / ⌥⌘→ / ⌥⌘← Split right / next column / previous column
⌘B / ⌃` / ⌃⇧` Toggle sidebar / toggle terminal panel / new terminal
⌘Z / ⇧⌘Z Undo / redo
Tab / ⇧Tab, ⌘] / ⌘[ Indent / outdent
⌘/ Toggle line comment
⌥↑ / ⌥↓, ⇧⌥↑ / ⇧⌥↓ Move line / copy line
⇧⌘K / ⌘↵ / ⇧⌘↵ Delete line / insert line below / insert line above
⌘L / ⇧⌘\ Select line / go to bracket
⌘= / ⌘- / ⌘0 Zoom text or image in / out / reset
⇧⌘V Toggle SVG preview
⌥Z Toggle word wrap for the current tab

License

MIT

About

A small, fast code editor written in Go, with a native GPU-drawn UI (no webview, no Electron)

Topics

Resources

Contributing

Stars

199 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages