Workspace
Editor
Edit files with multiple cursors, find and replace, a symbol outline and syntax highlighting.
Files open in Rexa’s editor as center tabs. The editor highlights syntax with tree-sitter, shows git changes in the gutter, and gets diagnostics and go-to-definition from language servers.
Editing
| Action | Shortcut |
|---|---|
| Undo / redo | ⌘ Z / ⌘ ⇧ Z |
| Delete line | ⌘ ⇧ K |
| Move line up / down | ⌥ ↑ / ⌥ ↓ |
| Duplicate line up / down | ⌥ ⇧ ↑ / ⌥ ⇧ ↓ |
| Outdent / indent | ⌘ [ / ⌘ ] |
| Toggle comment | ⌘ / |
| New line below / above | ⌘ ↵ / ⌘ ⇧ ↵ |
| Delete to line start / end | ⌘ ⌫ / ⌘ Delete |
| Save / save all | ⌘ S / ⌘ ⌥ S |
Emacs-style keys work too: ⌃ A, ⌃ E, ⌃ K and the rest. Brackets and quotes auto-pair, new lines auto-indent, and Tab inserts spaces.
In the editor, ⌘ I writes a comment for an agent and ⌘ L adds the selection to an agent’s prompt.
Selection and multiple cursors
- Click twice for a word, three times for a line, four times for the whole file. ⇧-click extends.
- ⌘ D adds the next occurrence of the selection.
- ⌥-click adds a cursor. Set
editor.multi_cursor_modifierto"cmd"to use ⌘-click instead. - ⌘ ⌥ ↑ and ⌘ ⌥ ↓ add a cursor above or below.
- Esc returns to one cursor.
Find and replace
⌘ F opens the find bar; ⌘ G finds the next match.
| In the find bar | Shortcut |
|---|---|
| Previous match | ⌘ ⇧ G |
| Toggle replace | ⌘ ⇧ H |
| Replace / replace all | ↵ / ⌘ ↵ |
| Match case | ⌘ ⌥ C |
| Whole word | ⌘ ⌥ W |
| Regular expression | ⌘ ⌥ R |
| Search in selection | ⌥ L |
Regex replacements expand $1 captures. Outside the find bar, ⌘ ⇧ G opens the Git panel.
Navigate
- Go to a line: type
path:lineorpath:line:colin quick open (⌘ P). - Symbol outline: ⌘ ⇧ O lists the file’s symbols. Moving through the list previews each one; ↵ jumps, Esc returns. It reads the syntax tree, so no language server is needed.
- Go to definition: F12 or ⌘-click. See Language servers.
- Overview ruler: the strip on the right edge marks the cursor, search matches and git changes. Click or drag it to scroll.
Languages
Syntax highlighting is built in for:
Astro, Bash, C, C#, C++, CMake, CSS and SCSS, Dart, Diff, Dockerfile, .env, Elixir, git commit and rebase files, .gitignore-style files, Go, GraphQL, Haskell, HCL and Terraform, HTML, Java, JavaScript and JSX, JSON and JSONC, Kotlin, Lua, Make, Markdown and MDX, Nix, OCaml, PHP, Prisma, Protobuf, Python, Ruby, Rust, Scala, SQL, Svelte, Swift, TOML, TypeScript and TSX, Vue, XML, YAML and Zig.
Embedded languages are highlighted too, such as CSS and JavaScript inside HTML, and code fences in Markdown. Zed extensions add more languages; see Themes and extensions.
Saving and outside changes
- Unsaved edits survive a quit. They are restored with the tab on the next launch.
- Files changed on disk reload when the tab has no unsaved edits, keeping the cursor, scroll and undo history. With unsaved edits, the tab keeps your version.
- No autosave. Save with ⌘ S.
- Files Rexa manages, such as its saved state, open read-only.
Git in the editor
The gutter marks changed lines, and inline blame shows who last changed the cursor’s line. Right-click → Copy As copies the path, the relative path, a permalink to the lines on GitHub or GitLab, or the blame commit’s SHA or message. See Git.
Settings
font_sizenumberdefault: 13.5
font_familystringdefault: 'JetBrains Mono'
font_weightnumberdefault: 400
editor.tab_sizenumberdefault: 4
editor.soft_wrapbooleandefault: false
editor.markdown_soft_wrapbooleandefault: true
editor.line_numbersbooleandefault: true
editor.indent_guidesbooleandefault: true
editor.highlight_active_linebooleandefault: true
editor.render_whitespacebooleandefault: false
editor.syntaxbooleandefault: true
editor.multi_cursor_modifier'alt' | 'cmd'default: 'alt'
editor.inline_blamebooleandefault: true
editor.vimbooleandefault: false
Most of these have a palette toggle, such as editor: toggle soft wrap.
Not supported
Code folding, a minimap, sticky scroll, breadcrumbs, snippets, format on save, and column selection with the mouse.