Appearance
Editor basics
The editor inside a project workspace is built on CodeMirror 6 — the same engine that powers a lot of desktop and web editors. This page covers the everyday surface: opening files, navigating, and the most common edit gestures.
For configurable keyboards above the soft keyboard, see Custom keyboards. For snippets, see Snippets.
The workspace layout
A project workspace has three regions:
- Activity bar (left edge) — switches between modes: Editor, Git, Git History, plus any others enabled in your build. Persistent.
- Sidebar — content varies by mode. In Editor mode it's the file tree.
- Main area — the editor surface. Tabs across the top, the open file beneath, status strip at the bottom.
The control at the leading edge of the editor toolbar adjusts how the sidebar and editor share the screen. It has three positions:
- Split (both visible) — it shows a small divider handle. Tap it to hide the sidebar; drag it toward the editor to expand the sidebar to full width.
- Editor only (sidebar hidden) — it shows a chevron. Tap to bring the sidebar back. The sidebar restores to the same scroll position and selection.
- Sidebar expanded (full width, for browsing) — the editor shrinks to a thin strip with a chevron. Tap the chevron, or just tap a file, to return to the split.
On a hardware keyboard you can assign a shortcut to Expand sidebar over the editor in Settings → Keyboard Shortcuts.
Opening, switching, and closing files
- Open a file — tap it in the sidebar's file tree. The file opens in a new tab if it isn't already open; otherwise switches to the existing tab.
- Preview tabs — by default a tapped file opens in a single shared preview tab (shown in italics) that gets reused as you browse, so exploring doesn't pile up tabs. Editing it, or double-tapping the tab, pins it as a permanent tab. Prefer permanent tabs? Turn on Open Files in New Tab in Settings → Editor → Tabs, and the Maximum Open Tabs cap (default 16, minimum 8) keeps tab count in check — once you hit the limit the least-recently-used tab is saved and closed automatically (tabs with unsaved changes are never auto-closed).
- Images and other non-text files — tapping does the natural thing for the file's type: an image opens a quick preview, a PDF, Office, or media file opens in QuickLook (the iOS system previewer), and a file with no preview (a
.zip, say) shows a short "No preview available" panel. None of these become editor tabs. Long-press any file for the full menu — including Preview and Share (the iOS share sheet, for handing the file to another app or saving it to Files). - Switch tabs — tap a tab, or use Cmd+1, Cmd+2, … on a hardware keyboard. Cmd+Shift+] / Cmd+Shift+[ cycle next / previous.
- Close a tab — long-press a tab to reveal the close icon, or Cmd+W on a hardware keyboard.
- Recent files — Cmd+E shows a most-recently-used list across all tabs you've had open this session.
The file tree has expand/collapse chevrons next to folders. Long- press a file for the file-action menu (rename, delete, move).
Quick open and navigation
Cmd+P — quick open. Type to fuzzy-find a file by path; tap or Return to open.
Cmd+Shift+P — command palette. Type to find any action by name (any keybinding catalog entry — settings, snippets, workspace modes, etc.).
Cmd+Shift+O — file structure (functions, classes, headings) for the current file. There's also a floating navigation button in the editor corner — a multi-gesture control:
- Tap — file structure (pick an item to jump there).
- Swipe ← / → — previous / next tab.
- Swipe ↑ — the open-tabs list (tap to switch, ✕ to close).
- Swipe ↓ — recently opened files (tap to reopen).
- Long-press — a labeled menu of all the above (also the VoiceOver path).
Structure, tab list, and recent files all open in the same panel. Every gesture is remappable, and you can resize / reposition / hide the button, in Settings → Floating Button. For file structure, the button gets out of the way after a jump by default — turn that off (Dismiss After Jump) to browse, or tap the pin in the panel header to keep it open for the current visit. Hiding the button (Show Button off) still leaves the structure outline reachable from the shortcut above.
Cmd+, — open settings.
Cmd+0 — go home (back to project list).
Find and replace
- Cmd+F — find in current file. The overlay shows match count and next / previous arrows.
- Cmd+G / Cmd+Shift+G — find next / previous (works even without the overlay visible).
- Cmd+H (with Find open) — toggle replace. The bar grows a second row for the replacement; tap Replace or Replace All.
- Cmd+Shift+F — content search across the whole project.
The find bar accepts plain strings; toggle the icons in the bar for case-sensitive, whole-word, and regex matching.
Multi-cursor and selection
CodeMirror's multi-cursor model. The shortcuts:
- Cmd+D — select the next occurrence of the current word. Repeat to add more occurrences. Each one becomes a cursor; type to edit them in lock-step.
- Cmd+K Cmd+D (chord) — skip the last selected occurrence (keep the cursor where it was but advance the selection).
- Cmd+U — undo the last Cmd+D / multi-cursor add.
- Cmd+Shift+L — select all occurrences of the current word at once.
For block / column edits:
- Long-press in the editor and drag — starts a free selection.
- On a hardware keyboard, Cmd+Option+ArrowUp / Cmd+Option+ArrowDown add a cursor above / below the current line.
Line edits
- Tab / Shift+Tab — indent / outdent the current line (or all selected lines).
- Cmd+/ — toggle line comment using the current file's language comment style.
- Cmd+Shift+K — delete the current line.
- Option+ArrowUp / ArrowDown — move the current line up / down.
- Cmd+Backspace — delete from cursor to start of line.
- Cmd+Delete — delete from cursor to end of line.
Bracket and structural navigation
- Cmd+Shift+\ — jump to matching bracket.
- Cmd+Shift+M — select to matching bracket.
- Cmd+Shift+A — expand selection to enclosing syntax node (paragraph, expression, statement, etc., depending on language).
- Cmd+L — select current line.
Folding
- Cmd+Shift+Z (or whatever key is bound in your catalog) — toggle fold at cursor. Folds collapse functions, blocks, and other syntactic chunks.
(See Settings → Keyboard Shortcuts for your build's exact bindings — the catalog is customizable and your overrides win.)
Preview (Markdown & SVG)
Files with a rendered form get a preview toggle in the editor toolbar (the eye icon, or Cmd+Opt+M on a hardware keyboard):
- Markdown (
.md,.markdown) — switches between source and the rendered document. Heading lookup, link tapping, and per-file scroll position survive toggling back and forth and switching tabs. KaTeX math and Mermaid diagrams are not yet rendered (the native renderer can't host them; a WebView-based upgrade is in the roadmap). - SVG (
.svg) — switches between the source markup and the rendered image, scaled to fit.
The preview is per-file (toggling one file doesn't affect another) and built into the app — it doesn't need network.
Hardware keyboard
The editor is fully usable from an external keyboard — including all the shortcuts listed above. Bluetooth keyboards (Magic Keyboard, Smart Keyboard Folio, any third-party BT board) work without setup as long as iOS sees them.
A few iPad-specific notes:
- The on-screen keyboard stays suppressed while a hardware keyboard is attached. The accessory row above it (see Custom keyboards) also disappears.
- The InputAccessoryView with the editor's command shortcuts is rendered as a floating bar.
For the full hardware shortcut catalog, see Settings → Keyboard Shortcuts. Each entry shows its current combo and lets you customize.
Saving
Auto-save runs a short moment after you stop typing. Cmd+S also saves on demand. There's no "modified" indicator to chase — if you've stopped typing, the file is saved.
To go from saved-to-disk to committed-to-git, see Committing changes.
See also
- Custom keyboards — the accessory bar above the iOS soft keyboard
- Snippets — code templates with placeholders
- Getting started
