Selection
settings.json
.config/zed/settings.json
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"cli_default_open_behavior": "existing_window",
"session": {
"trust_all_worktrees": true
},
"vim_mode": true,
"agent_servers": {
"codex-acp": {
"default_config_options": {
"mode": "read-only",
"reasoning_effort": "medium",
"model": "gpt-5.6-sol"
},
"type": "registry"
},
"claude-acp": {
"default_config_options": {
"effort": "medium"
},
"type": "registry"
}
},
// Stepping through entries reuses one italic preview tab instead of
// opening a tab per file β the closest thing to a Snacks preview pane.
"preview_tabs": {
"enabled": true,
"enable_preview_from_project_panel": true,
"enable_preview_from_file_finder": true,
"enable_preview_from_code_navigation": true
},
"project_panel": { "dock": "right", "default_width": 260, "git_status": true },
"git_panel": { "dock": "right", "default_width": 320 },
"agent": {
"dock": "bottom",
// Only the dimension along the dock's axis applies: width when docked to a
// side, height when docked to the bottom.
"default_width": 480,
"default_height": 420,
// Off by default, which hides agent edits in normally opened files.
"single_file_review": true,
"expand_edit_card": true
},
// MCP servers for the agent. Started locally as stdio subprocesses.
"context_servers": {
// `--editor` serves draw.io from the server itself, so no browser
// extension is needed. Ports moved off the defaults (3333/3000) to stay
// clear of local dev stacks; Codex runs its own instance on 7334/7331.
"drawio": {
"command": "npx",
"args": [
"-y",
"drawio-mcp-server",
"--editor",
"--extension-port",
"7333",
"--http-port",
"7330"
],
"env": {}
}
},
// Ports lua/core/options.lua: hybrid line numbers, cursorline, scrolloff.
"relative_line_numbers": "enabled",
"current_line_highlight": "line",
"vertical_scroll_margin": 8,
"horizontal_scroll_margin": 8,
"inlay_hints": { "enabled": true },
"diagnostics": { "inline": { "enabled": true } },
// On-demand only, like conform.nvim.
"format_on_save": "off",
"auto_install_extensions": { "svelte": true },
// Server settings live in each project (pyrightconfig.json, .zed/settings.json),
// not here.
//
// Formatting runs in two phases: code_actions_on_format first, then formatter.
// That is where linting with autofix hooks in.
"languages": {
"JavaScript": {
"code_actions_on_format": { "source.fixAll.eslint": true },
"formatter": "prettier"
},
"TypeScript": {
"code_actions_on_format": { "source.fixAll.eslint": true },
"formatter": "prettier"
},
"TSX": {
"code_actions_on_format": { "source.fixAll.eslint": true },
"formatter": "prettier"
},
"Svelte": {
"code_actions_on_format": { "source.fixAll.eslint": true },
"formatter": "prettier"
},
"JSON": { "formatter": "prettier" },
"JSONC": { "formatter": "prettier" },
"YAML": { "formatter": "prettier" },
"Markdown": { "formatter": "prettier" },
"CSS": { "formatter": "prettier" },
"HTML": { "formatter": "prettier" },
"Rust": { "formatter": "language_server" },
"Go": {
"code_actions_on_format": { "source.organizeImports": true },
"formatter": "language_server"
},
"Python": {
// pyright types, ruff lints and formats.
"language_servers": ["pyright", "ruff"],
"code_actions_on_format": {
"source.fixAll.ruff": true,
"source.organizeImports.ruff": true
},
"formatter": { "language_server": { "name": "ruff" } }
}
},
"icon_theme": {
"mode": "dark",
"light": "Material Icon Theme",
"dark": "Material Icon Theme"
},
"ui_font_size": 16,
"buffer_font_size": 15,
"theme": {
"mode": "dark",
"light": "Gruvbox Light",
"dark": "Gruvbox Dark",
},
}