The editor
Tabs, editing, saving with Ctrl+S, what the gutter tells you, and the files that open in something other than a code view.
The middle of the window is where files open. It is a real code editor — syntax colour, find and replace, undo, multiple tabs — and it is deliberately a light one. It is built for reading your project and making changes to it, not for competing with the editor you already have open on the other monitor.
Knowing where that line sits will save you ten minutes of hunting for a feature that isn't there, so it's spelled out below rather than left for you to discover.
Opening files#
Click a file in the explorer and it opens. Click another and it takes over the same tab — until you type something. The moment you edit a file, its tab is yours for good (even after you save), and the next file you open gets a tab of its own.
Files opened any other way — from a search result, from a node in the 3D view, from an import link — always open in a new tab.
If the file is already open somewhere, you just get switched to it.
Note
Nothing marks a tab as reusable. VS Code italicises the title; Semantix doesn't, so which tab is about to be replaced is something you infer rather than see.
Tabs#
The strip along the top holds one tab per open file, each with an icon for its language. Hover a tab to see the file's full path.
- Close — the × on hover, or middle-click anywhere on the tab.
- Unsaved — a small dot sits where the × goes. Hover and it becomes the ×.
- Right-click — the whole file menu from the explorer (rename, delete, copy path, reveal, cut, copy, paste), then Close, Close Others, Close All.
- The leftmost tab is the project's name — the project root. It has no close button, clicking it takes you back to the whole-project view, and it is never taken over by a file you open: your first file always gets a tab of its own beside it.
Beside your files sit the surface tabs — Settings, Theme, the Project Manager and the rest — which are never taken over either.
Tabs never reorder and never collapse into a dropdown — with enough of them open the strip scrolls sideways. Your open tabs, and which one was active, come back when you reopen the project.
There is no keyboard shortcut for closing a tab, moving between tabs, or reopening a closed one.
Ctrl+Tab belongs to the chat panel, not to files.
Editing#
Type. That's most of it.
Nothing saves itself. Typing marks the tab with a dot; Ctrl+S writes the file to disk and the
dot goes. There is no autosave and no "you have unsaved changes" prompt — the dot is the prompt. It
used to save on its own, and the save kept snapping the cursor to the top of the file; now the file
is written when you say so.
What's bound and works:
Ctrl+S |
Save |
Ctrl+F |
Find and replace, with case-sensitive, whole-word and regular expression toggles |
F3 / Ctrl+G |
Next match — add Shift for previous |
Ctrl+Alt+G |
Go to line |
Ctrl+Z / Ctrl+Y |
Undo / redo |
Ctrl+/ |
Comment or uncomment the selection |
Alt+↑ / Alt+↓ |
Move the current line up or down |
Shift+Alt+↑ / Shift+Alt+↓ |
Duplicate the line up or down |
Ctrl+Shift+K |
Delete the line |
Ctrl+[ / Ctrl+] |
Indent less / more |
Ctrl+I |
Grow the selection to the enclosing block |
Tab |
Expand an Emmet abbreviation — otherwise indents |
Ctrl + / - |
Resize the interface and the editor text together |
What is not here. No suggestions as you type, and no snippets. No code folding. Brackets and quotes don't close themselves, and matching brackets aren't highlighted.
There is no multi-cursor, and the keys you'd expect to make one do something else instead:
Ctrl+Alt+↑/↓ move your cursor a line rather than adding one, and Ctrl+D selects the word under
the cursor the first time — press it again and it only scrolls to the next occurrence without
selecting it.
Long lines always wrap, and that isn't adjustable.
Note
Emmet is the one thing here that behaves like autocomplete: type an abbreviation and a preview of
the expansion appears, with Tab to accept it. It's meant for HTML and CSS, but it's live in
every file — so an abbreviation-shaped fragment in a .ts or .py file can offer to become
markup. Carry on typing and it goes away.
Note
If a save ever fails — a read-only file, a permissions problem — the editor doesn't tell you. The unsaved dot simply stays. It's worth a glance at the tab after saving anything unusual.
Select some text and a small pill appears beside it with two buttons: Send to chat, which drops the selection into the composer as a code block, and Copy.
What the gutter tells you#
Line numbers on the left. The minimap on the right is off by default — it repaints on every scroll, which costs smoothness on long files — and lives at Theme → Code → Minimap.
Red squiggles are syntax errors only — an unclosed brace, an unterminated string, a stray token. They appear a moment after you stop typing, with no build step. They are not type errors: nothing here checks that you passed the right argument or that a name exists.
Hover a squiggle and the tooltip carries a small button — Send error to agent chat — which drops the message and the offending line straight into the composer. That is usually faster than describing the problem yourself.
There is no problems panel and no error count — squiggles in the file, and a red badge in the explorer on files that have them.
Reading code#
Hover any name in the editor and hold for a moment: a card appears with what it is, its signature, where it's defined, and how many places use it. For a function it counts callers separately from references. Expand the card and you get the first few of those sites, each one clickable.
F12 with your cursor in a name jumps to where it's defined.
→ Search covers what that card can and can't tell you, and which languages it works for.
Files that aren't code#
Images open as images — png, jpg, jpeg, gif, webp, svg and ico — centred, scaled
to fit, on a checkerboard so transparency is visible. There's no zoom or pan, and no way to open an
.svg as text here — use another editor for that.
Anything else that is text opens as text. A .toml, .yaml or .sql file is fully editable; it
just won't be coloured, because colouring needs a grammar and there are ten of them:
JavaScript (with JSX), TypeScript, TSX, Rust, Python, Go, HTML, CSS, JSON, Markdown.
A genuinely binary file — a PDF, a zip, a font — opens a tab that says so: the file's name, Binary file · 1.2 MB · not shown, and a Reveal in File Manager button, which is the one useful thing
to do with it.
Making it yours#
The Theme tab's Code page holds everything about the editor's look: the Syntax theme
(seventeen of them, dark and light, with a live preview — Studio Secondary by default, which
colours code in shades of your theme's secondary colour), the Typeface (seven monospace choices;
the ones with programming ligatures render them), the Font size (10 to 24, 13 by default) and
the Minimap switch. Switching any of them is instant and doesn't disturb your scroll position or
undo history.
Text size and typeface are remembered per project.
When the agent has the file#
If you have editor follow switched on and the agent creates a new file, it opens in a tab and types itself out in front of you. The editor is read-only while that happens, and the view stays pinned to the newest line. When the agent finishes, that tab holds the real file from disk.
Editing an existing file doesn't stream like that — the file opens and its content updates when the edit lands.
If the agent writes to a file you already have open, your editor is refreshed with the new content — unless you have unsaved edits in it. A tab with the dot on it is never overwritten from disk; it keeps your version until you save or close it. A clean tab takes the change, and only the changed span moves, so your cursor and your place in the file survive.
→ Watching it work — the follow modes, and how to turn this off.