project-panel.md

  1---
  2title: Project Panel - Zed
  3description: Navigate workspace files and directories with Zed's project panel. Create, rename, trash and delete file and directories.
  4---
  5
  6# Project Panel
  7
  8The project panel shows a tree view of your workspace's files and directories.
  9Toggle it with {#action project_panel::ToggleFocus} ({#kb
 10project_panel::ToggleFocus}), or click the **Project Panel** button in the
 11status bar.
 12
 13![Project Panel](https://images.zed.dev/docs/project-panel/panel.png)
 14
 15## Navigating
 16
 17Use the arrow keys to move through entries. {#kb
 18project_panel::ExpandSelectedEntry} expands a directory and {#kb
 19project_panel::CollapseSelectedEntry} collapses it. {#kb
 20project_panel::CollapseAllEntries} collapses every directory at once. Press {#kb
 21project_panel::Open} or click to preview a selected file, without giving it a
 22permanent tab. Editing the file or double-clicking it promotes it to a permanent tab.
 23
 24### Auto-reveal
 25
 26By default, switching files in the editor will automatically highlight it in the
 27project panel and scroll it into view. This can be disabled with the
 28`project_panel.auto_reveal_entries` setting.
 29
 30### Sticky Scroll
 31
 32When `project_panel.sticky_scroll` is enabled (the default), ancestor directories pin themselves to the top
 33of the panel as you scroll, so you always know which directory you're on.
 34
 35![Project Panel: Sticky Scroll Enabled](https://images.zed.dev/docs/project-panel/sticky-scroll-true.png)
 36
 37![Project Panel: Sticky Scroll Disabled](https://images.zed.dev/docs/project-panel/sticky-scroll-false.png)
 38
 39### Directory Folding
 40
 41When `project_panel.auto_fold_dirs` is enabled (the default), chains of directories that each contain a
 42single child directory are collapsed into one row (for example,
 43`src/utils/helpers` instead of three separate levels). Right-click a folded
 44directory and choose **Unfold Directory** to expand the chain, or **Fold
 45Directory** to collapse it again.
 46
 47![Project Panel: Auto Fold Directories Enabled](https://images.zed.dev/docs/project-panel/auto-fold-dirs-true.png)
 48
 49![Project Panel: Auto Fold Directories Disabled](https://images.zed.dev/docs/project-panel/auto-fold-dirs-false.png)
 50
 51## Selecting Multiple Entries
 52
 53Hold `shift` while pressing the up/down arrow keys to mark additional entries.
 54Most file operations, like cut, copy, trash, delete and drag, apply to the full
 55set of marked entries.
 56
 57When exactly two files are marked, {#action project_panel::CompareMarkedFiles}
 58({#kb project_panel::CompareMarkedFiles}) opens a diff view comparing them.
 59
 60![Project Panel: Compare Marked Files](https://images.zed.dev/docs/project-panel/compare-marked-files.png)
 61
 62## File Operations
 63
 64Right-click an entry to see the full list of available operations, or use the
 65keybindings below.
 66
 67### Creating Files and Directories
 68
 69- {#action project_panel::NewFile} ({#kb project_panel::NewFile}) creates a new
 70  file inside the selected directory.
 71- {#action project_panel::NewDirectory} ({#kb project_panel::NewDirectory})
 72  creates a new directory.
 73
 74An inline editor appears so you can type the name. Press `enter` to
 75confirm or `escape` to cancel.
 76
 77### Renaming
 78
 79Press {#kb project_panel::Rename} to rename the selected entry. The filename
 80stem is pre-selected so you can type a new name without accidentally changing
 81the extension. Press `enter` to confirm or `escape` to
 82cancel.
 83
 84### Cut, Copy, and Paste
 85
 86- {#action project_panel::Cut} ({#kb project_panel::Cut}) marks entries for
 87  moving.
 88- {#action project_panel::Copy} ({#kb project_panel::Copy}) marks entries for
 89  copying.
 90- {#action project_panel::Paste} ({#kb project_panel::Paste}) places them in the
 91  selected directory.
 92
 93When pasting would create a name conflict, Zed appends a "copy" suffix (e.g.,
 94`file copy.txt`, `file copy 2.txt`). If a single file is pasted with a generated
 95suffix, the rename editor opens automatically so you can adjust the name.
 96
 97### Duplicate
 98
 99{#action project_panel::Duplicate} ({#kb project_panel::Duplicate}) copies and
100pastes the selected entries in one step.
101
102### Trash and Delete
103
104- {#action project_panel::Trash} ({#kb project_panel::Trash}) moves entries to
105  the system trash.
106- {#action project_panel::Delete} ({#kb project_panel::Delete}) permanently
107  deletes entries.
108
109Both actions show a confirmation prompt listing the affected files. If any of
110the files have unsaved changes, the prompt warns you.
111
112### Drag and Drop
113
114Drag entries within the panel to move them. Hold `alt` while dropping to copy
115instead of move. You can also drag files from your operating system's file
116manager into the project panel to copy them into the project. Drag and drop can
117be disabled with the `project_panel.drag_and_drop` setting.
118
119## Git Integration
120
121When `project_panel.git_status` is enabled (the default), file and directory names are tinted
122to reflect their git status—modified, added, deleted, untracked, or conflicting.
123
124Setting `project_panel.git_status_indicator` to `true` (disabled by default) adds a letter badge next
125to each name: **M** (modified), **A** (added), **D** (deleted), **U**
126(untracked) or **!** (conflict).
127
128![Project Panel: Git Integration](https://images.zed.dev/docs/project-panel/git-status.png)
129
130Use {#action project_panel::SelectNextGitEntry} and {#action
131project_panel::SelectPrevGitEntry} to jump between tracked files with
132uncommitted changes. The right-click menu also offers **Restore File** to
133discard changes and **View File History** to browse a file's commit log.
134
135## Diagnostics
136
137The `project_panel.show_diagnostics` setting controls whether error and warning
138indicators appear on file and folder icons. Set it to `"all"` to see both errors
139and warnings, `"errors"` for errors only, or `"off"` to hide them. Diagnostics
140propagate upward—if a file deep in a directory has an error, its ancestor
141folders show an indicator too.
142
143Enable `project_panel.diagnostic_badges` (disabled by default) to display numeric error and warning
144counts next to each entry. Use {#action project_panel::SelectNextDiagnostic} and
145{#action project_panel::SelectPrevDiagnostic} to navigate between files that
146have diagnostics.
147
148See also [Diagnostics & Quick Fixes](./diagnostics.md) for editor and tab diagnostic settings.
149
150## Filtering and Sorting
151
152### Hiding Files
153
154- `project_panel.hide_gitignore` hides files matched by `.gitignore`. Toggle
155  this with {#action project_panel::ToggleHideGitIgnore}.
156- `project_panel.hide_hidden` hides dotfiles and other hidden entries. Toggle
157  with {#action project_panel::ToggleHideHidden}.
158
159### Sorting
160
161The `project_panel.sort_mode` setting controls grouping:
162
163- `"directories_first"` (default) — directories appear before files at each
164  level.
165- `"files_first"` — files appear before directories.
166- `"mixed"` — directories and files are sorted together.
167
168The `project_panel.sort_order` setting controls name comparison:
169
170- `"default"` — case-insensitive natural sort (`file2` before `file10`).
171- `"upper"` — uppercase names grouped first, then lowercase.
172- `"lower"` — lowercase names grouped first, then uppercase.
173- `"unicode"` — raw Unicode codepoint order with no case folding.
174
175## Other Actions
176
177- {#action project_panel::RevealInFileManager} ({#kb
178  project_panel::RevealInFileManager}) reveals the selected entry in Finder /
179  File Explorer.
180- {#action project_panel::NewSearchInDirectory} ({#kb
181  project_panel::NewSearchInDirectory}) opens a project search scoped to the
182  selected directory.
183- {#action project_panel::RemoveFromProject} removes a workspace root folder
184  from the project.