Files and the editor
Find files across projects, search their contents, edit code, and preview Markdown beside the terminal.
Press Cmd+Shift+E for the file tree. Like the
git panel it's rooted at
the project directory, so it doesn't
re-root every time you cd.
The tree
Click a file to open it in the focused pane. Right-click for the rest:
| Item | What it does |
|---|---|
| Open / Open to the Side | In this pane, or in a new split |
| Open in Default App | Hand it to whatever macOS opens it with |
| Reveal in Finder | |
| Copy Path | The absolute path |
| cd Here | Run cd <folder> in the focused terminal |
| New File… / New Folder… | Create inside the selected folder |
| Rename | |
| Move to Trash | To the Trash, not deleted outright |
Rows use filename-aware Material icons. Inside a Git repository, changed paths also use status colors and badges, while ignored files are dimmed, so the tree shows the same worktree state as the Git panel without opening it.
Find files and search contents
The command palette (Cmd+P) finds files by name or path across the local projects open in the current window, alongside commands and open sessions. Selecting a file switches to its project and opens it there.
To search the text inside files, click the magnifying glass in the Files panel, or choose Search File Contents in the command palette. Enter text and press Return to search the current local project directory. Use Aa to match case, and open a result to jump to its matching line in the editor.
Content search matches literal text, skips binary files and common dependency and build folders, and stops at 2,000 matches. You can stop a running search while keeping its results, or close search to return to the file tree. SSH projects are excluded from these local file searches.
The editor
Opening a file gives you a real editor in a pane, with syntax highlighting.
| Action | Shortcut |
|---|---|
| Save | Cmd+S |
| Find | Cmd+F |
| Find and replace | Opt+Cmd+F |
| Find next | Cmd+G |
Long lines wrap to the pane width by default. Disable
editor.wrap-lines to scroll horizontally.
Renaming a file in the tree updates any pane that has it open, including files underneath a renamed folder.
If another program changes an open file, Zshell refreshes a clean preview when the app becomes active again. It never replaces an editor buffer with unsaved changes.
This is an editor for the change you're already looking at — fix a typo, adjust a constant, read a file the diff referenced. There's no language server, no completion, and no project-wide refactoring. That's deliberate.
Markdown preview
Open a .md file to read its rendered preview in the same pane. Click Edit
in the upper-right corner to work on its source, then Preview to see the
result. Zshell remembers your preferred mode for other Markdown files and the
next launch.
Switching modes keeps your edits and undo history. Save changes with Cmd+S as usual. Markdown files with other extensions open as source.
Diffs
A diff opened from the git panel is just another pane, so a diff, a file, and a terminal can sit side by side in one tab. It uses your terminal font, and a thousand-file changeset opens as fast as a one-line one. Live, unstaged worktree diffs can also switch from Review to Edit; staged and historical diffs remain read-only. See Reading diffs.