Some checks failed
Update All Top Ranking Issues / update_top_ranking_issues (push) Has been cancelled
Triage Project Sync (#84) / Sync triage project (push) Has been cancelled
release_nightly / notify_on_failure (push) Has been cancelled
release_nightly / check_style (push) Has been cancelled
release_nightly / run_tests_windows (push) Has been cancelled
release_nightly / clippy_windows (push) Has been cancelled
release_nightly / bundle_linux_aarch64 (push) Has been cancelled
release_nightly / bundle_linux_x86_64 (push) Has been cancelled
release_nightly / bundle_mac_aarch64 (push) Has been cancelled
release_nightly / bundle_mac_x86_64 (push) Has been cancelled
release_nightly / bundle_windows_aarch64 (push) Has been cancelled
release_nightly / bundle_windows_x86_64 (push) Has been cancelled
release_nightly / build_nix_linux_x86_64 (push) Has been cancelled
release_nightly / build_nix_mac_aarch64 (push) Has been cancelled
release_nightly / update_nightly_tag (push) Has been cancelled
Hotfix Review Monitor / check-hotfix-reviews (push) Has been cancelled
Stale PR Review Reminder / check-stale-prs (push) Has been cancelled
Update Weekly Top Ranking Issues / update_top_ranking_issues (push) Has been cancelled
Bump collab-staging Tag / update-collab-staging-tag (push) Has been cancelled
compliance_check / scheduled_compliance_check (push) Has been cancelled
Single-commit orphan branch: full zed-industries/zed @ 8c74db0 source tree with a 3-file patch applied (no upstream history). Patch (crates/gpui_linux/src/linux/wayland/): - serial.rs: add SerialKind::KeyboardEnter - client.rs: store wl_keyboard.enter serial; add latest_serial_of() - window.rs: activate() uses keyboard-enter serial (Mutter focus gate) Mutter honors window activation only when the token carries the keyboard- focus serial from wl_keyboard.enter; GPUI used a stale mouse-press serial. See docs/tray-window-focus-wayland.md in logiguard. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
159 lines
4.9 KiB
Markdown
159 lines
4.9 KiB
Markdown
<!--
|
|
GOLD STANDARD EXAMPLE: Configuration Documentation
|
|
|
|
This example demonstrates documentation for settings and configuration.
|
|
|
|
Key patterns to note:
|
|
- Anchor IDs on all major sections
|
|
- Opening paragraph explains what this guide covers
|
|
- Multiple JSON examples with [settings] annotation
|
|
- Platform-specific file paths
|
|
- Proper callout formatting
|
|
- "See Also" section at the end (not "What's Next")
|
|
-->
|
|
|
|
---
|
|
|
|
title: Configuring Zed - Settings and Preferences
|
|
description: Configure Zed with the Settings Editor, JSON files, and project-specific overrides. Covers all settings options.
|
|
|
|
---
|
|
|
|
# Configuring Zed
|
|
|
|
This guide explains how Zed's settings system works, including the Settings Editor, JSON configuration files, and project-specific settings.
|
|
|
|
For visual customization (themes, fonts, icons), see [Appearance](./appearance.md).
|
|
|
|
## Settings Editor {#settings-editor}
|
|
|
|
The **Settings Editor** ({#kb zed::OpenSettings}) is the primary way to configure Zed. It provides a searchable interface where you can browse available settings, see their current values, and make changes.
|
|
|
|
To open it:
|
|
|
|
- Press {#kb zed::OpenSettings}
|
|
- Or run {#action zed::OpenSettings} from the command palette
|
|
|
|
As you type in the search box, matching settings appear with descriptions and controls to modify them. Changes save automatically to your settings file.
|
|
|
|
> **Note:** Not all settings are available in the Settings Editor yet. Some advanced options, like language formatters, require editing the JSON file directly.
|
|
|
|
## Settings Files {#settings-files}
|
|
|
|
### User Settings {#user-settings}
|
|
|
|
Your user settings apply globally across all projects. Open the file with {#kb zed::OpenSettingsFile} or run {#action zed::OpenSettingsFile} from the command palette.
|
|
|
|
The file is located at:
|
|
|
|
- macOS: `~/.config/zed/settings.json`
|
|
- Linux: `~/.config/zed/settings.json` (or `$XDG_CONFIG_HOME/zed/settings.json`)
|
|
- Windows: `%APPDATA%\Zed\settings.json`
|
|
|
|
The syntax is JSON with support for `//` comments.
|
|
|
|
### Default Settings {#default-settings}
|
|
|
|
To see all available settings with their default values, run {#action zed::OpenDefaultSettings} from the command palette. This opens a read-only reference you can use when editing your own settings.
|
|
|
|
### Project Settings {#project-settings}
|
|
|
|
Override user settings for a specific project by creating a `.zed/settings.json` file in your project root. Run {#action zed::OpenProjectSettings} to create this file.
|
|
|
|
Project settings take precedence over user settings for that project only.
|
|
|
|
```json [settings]
|
|
// .zed/settings.json
|
|
{
|
|
"tab_size": 2,
|
|
"formatter": "prettier",
|
|
"format_on_save": "on"
|
|
}
|
|
```
|
|
|
|
You can also add settings files in subdirectories for more granular control.
|
|
|
|
> **Note:** Not all settings can be set at the project level. Settings that affect the editor globally (like `theme` or `vim_mode`) only work in user settings. Project settings are limited to editor behavior and language tooling options like `tab_size`, `formatter`, and `format_on_save`.
|
|
|
|
## How Settings Merge {#how-settings-merge}
|
|
|
|
Settings are applied in layers:
|
|
|
|
1. **Default settings** — Zed's built-in defaults
|
|
2. **User settings** — Your global preferences
|
|
3. **Project settings** — Project-specific overrides
|
|
|
|
Later layers override earlier ones. For object settings (like `terminal`), properties merge rather than replace entirely.
|
|
|
|
## Per-Release Channel Overrides {#release-channel-overrides}
|
|
|
|
Use different settings for Stable, Preview, or Nightly builds by adding top-level channel keys:
|
|
|
|
```json [settings]
|
|
{
|
|
"theme": "One Dark",
|
|
"vim_mode": false,
|
|
"nightly": {
|
|
"theme": "Rosé Pine",
|
|
"vim_mode": true
|
|
},
|
|
"preview": {
|
|
"theme": "Catppuccin Mocha"
|
|
}
|
|
}
|
|
```
|
|
|
|
With this configuration:
|
|
|
|
- **Stable** uses One Dark with vim mode off
|
|
- **Preview** uses Catppuccin Mocha with vim mode off
|
|
- **Nightly** uses Rosé Pine with vim mode on
|
|
|
|
Changes made in the Settings Editor apply across all channels.
|
|
|
|
## Settings Deep Links {#deep-links}
|
|
|
|
Zed supports deep links that open specific settings directly:
|
|
|
|
```
|
|
zed://settings/theme
|
|
zed://settings/vim_mode
|
|
zed://settings/buffer_font_size
|
|
```
|
|
|
|
These are useful for sharing configuration tips or linking from documentation.
|
|
|
|
## Example Configuration {#example-configuration}
|
|
|
|
```json [settings]
|
|
{
|
|
"theme": {
|
|
"mode": "system",
|
|
"light": "One Light",
|
|
"dark": "One Dark"
|
|
},
|
|
"buffer_font_family": "JetBrains Mono",
|
|
"buffer_font_size": 14,
|
|
"tab_size": 2,
|
|
"format_on_save": "on",
|
|
"autosave": "on_focus_change",
|
|
"vim_mode": false,
|
|
"terminal": {
|
|
"font_family": "JetBrains Mono",
|
|
"font_size": 14
|
|
},
|
|
"languages": {
|
|
"Python": {
|
|
"tab_size": 4
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## See Also {#see-also}
|
|
|
|
- [Appearance](./appearance.md) — Themes, fonts, and visual customization
|
|
- [Key bindings](./key-bindings.md) — Customize keyboard shortcuts
|
|
- [AI Configuration](./ai/configuration.md) — Set up AI providers, models, and agent settings
|
|
- [All Settings](./reference/all-settings.md) — Complete settings reference
|