Esc

    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_modifier to "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.

    • Go to a line: type path:line or path:line:col in 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

    Text size for the whole app, 8 to 32.

    font_familystringdefault: 'JetBrains Mono'

    Any installed monospaced font.

    font_weightnumberdefault: 400

    100 to 900.

    editor.tab_sizenumberdefault: 4

    Spaces per indent. A language’s own setting wins.

    editor.soft_wrapbooleandefault: false

    Wrap long lines in code.

    editor.markdown_soft_wrapbooleandefault: true

    Wrap long lines in markdown source.

    editor.line_numbersbooleandefault: true

    Show line numbers.

    editor.indent_guidesbooleandefault: true

    Show indent guides.

    editor.highlight_active_linebooleandefault: true

    Highlight the cursor’s line.

    editor.render_whitespacebooleandefault: false

    Show spaces and tabs.

    editor.syntaxbooleandefault: true

    Syntax highlighting.

    editor.multi_cursor_modifier'alt' | 'cmd'default: 'alt'

    Modifier that adds a cursor on click.

    editor.inline_blamebooleandefault: true

    Show blame for the cursor’s line.

    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.