理想的彼岸
分类标签留言板友链关于

本站由 KevinYouu 使用 Next.js 构建。

访问量: 0 访客数: 0 | 总访问量: 0 总访客数: 0

运行时间: 0 年 0 月 0 日 0 时 0 分 0 秒

Zed 编辑器配置全攻略:自动保存、Prettier、终端字体与格式化设置一步到位

Zed 编辑器配置全攻略:自动保存、Prettier、终端字体与格式化设置一步到位

IDE
Zed
其他语言: English
创建时间:2024-07-13
更新时间:2025-05-24
字数:15791
阅读时间:78.95分钟

本文详细讲解 Zed 编辑器的完整配置,涵盖自动保存、Prettier 设置、终端字体调整、格式化保存(Format on Save)、禁用或启用格式化(Prettier 和 Format 设置)、Tab 和缩进大小调整,以及 ESLint 配置等功能。无论是 Zed 编辑器的基础使用,还是高级功能如禁用连字、自定义命令、显示空格和 inlay hints。

介绍

Zed 是一款高性能的多人协作代码编辑器,出自 Atom 和 Tree-sitter 的创建者之手。它也是开源的。主要有以下优点:

  1. 使用流畅 使用不阻碍你的工具开始高效编码。Zed 结合了 IDE 的强大功能和轻量编辑器的灵敏性,让你能够亲身体验更高的产品力。

  2. 专为性能而设计 Zed 有效利用了每个 CPU 内核和您的 GPU,从而可以立即启动、瞬间加载文件,并在下一个显示刷新时对您的按键做出响应。强劲的性能让您保持高效工作,让其他工具感觉滞后。

  3. 智能即时服务 通过人工智能生成代码,节省时间和击键。Zed 支持 GitHub Copilot 开箱即用,您可以使用 GPT-4 通过按下 ctrl-enter 并输入自然语言提示来生成或重构代码。在内置助手面板中与模型进行对话交互,无需切换上下文,然后在内联生成过程中参考您的对话。

  4. 语言感知 Zed 在您输入时为每个缓冲区维护完整的语法树,实现精确的代码高亮、自动缩进、可搜索的大纲视图和结构选择。Zed 还支持语言服务器协议,提供自动完成、代码导航、诊断和重构。

如何使用

下载安装程序

MacOS

您可以通过下载页面获取稳定版本。如果您想下载我们的预览版本,您可以在其发布页面找到。在第一次手动安装后,Zed 将定期检查并自动为您安装更新。 您也可以通过 Homebrew 安装 Zed 稳定版:

bash
brew install --cask zed

以及 Zed 预览版:

bash
brew install --cask zed@preview

Linux

对于大多数人来说,安装 Zed 最简单的方法是通过我们的安装脚本:

bash
curl https://zed.dev/install.sh | sh

如果您想帮助我们测试新功能,您也可以安装我们的预览版本:

bash
curl https://zed.dev/install.sh | ZED_CHANNEL=preview sh

此脚本支持 x86_64 和 AArch64,以及常见的 Linux 发行版:Ubuntu、Arch、Debian、RedHat、CentOS、Fedora 等。

如果此脚本不适合您的用例或在运行 Zed 时遇到问题,请参考 Linux 特定文档。

配置文件示例

Zed 版本号: 0.187.8

json
{ "ssh_connections": [ { "host": "debian.local", "username": "root", "projects": [ { "paths": ["/root"] } ] } ], "assistant": { "default_model": { "provider": "zed.dev", "model": "claude-3-5-sonnet-20240620" }, "version": "2" }, "theme": "One Dark Pro", "telemetry": { "diagnostics": false, "metrics": false }, "autosave": "on_window_change", // UI "ui_font_size": 16, "ui_font_family": "Roboto Mono", // Editor "buffer_font_size": 16, "buffer_font_family": "Roboto Mono", "buffer_font_features": { "calt": false }, "toolbar": { // Whether to show breadcrumbs. "breadcrumbs": true, // Whether to show quick action buttons. "quick_actions": false, // Whether to show the Selections menu in the editor toolbar "selections_menu": false }, "tabs": { "git_status": true }, // Other "confirm_quit": true, "inline_completions": { "disabled_globs": [".env"] }, "current_line_highlight": "all", "chat_panel": { // Whether to show the chat panel button in the status bar. "button": false }, "outline_panel": { "button": false }, "notification_panel": { // Whether to show the notification panel button in the status bar. "button": false }, "soft_wrap": "editor_width", "terminal": { "button": true, "copy_on_select": true, "blinking": "on", "font_family": "Roboto Mono" }, "features": { "inline_completion_provider": "none" }, // "assistant": { // // Version of this setting. // "default_model": { // "provider": "openai", // "model": "gpt-4o-mini" // }, // "version": "2", // // Whether the assistant is enabled. // "enabled": true, // // Whether to show the assistant panel button in the status bar. // "button": true, // // Where to dock the assistant panel. Can be 'left', 'right' or 'bottom'. // "dock": "right", // // AI provider. // "provider": null // }, "collaboration_panel": { "button": false }, "preferences": { "includeInlayParameterNameHints": "all", "includeInlayParameterNameHintsWhenArgumentMatchesName": true, "includeInlayFunctionParameterTypeHints": true, "includeInlayVariableTypeHints": true, "includeInlayVariableTypeHintsWhenTypeMatchesName": true, "includeInlayPropertyDeclarationTypeHints": true, "includeInlayFunctionLikeReturnTypeHints": true, "includeInlayEnumMemberValueHints": true }, "languages": { "JavaScript": { "code_actions_on_format": { "source.fixAll.eslint": true } }, "TypeScript": { "code_actions_on_format": { "source.fixAll.eslint": true } } }, "prettier": { // Whether to consider prettier formatter or not when attempting to format a file. "allowed": true, // // Use regular Prettier json configuration. // If Prettier is allowed, Zed will use this for its Prettier instance for any applicable file, if // the project has no other Prettier installed. "plugins": [], // // Use regular Prettier json configuration. // If Prettier is allowed, Zed will use this for its Prettier instance for any applicable file, if // the project has no other Prettier installed. "tabWidth": 2, "bracketSpacing": true, "trailingComma": "es5", "semi": false, "jsxSingleQuote": false, "singleQuote": true } }

这是配置完成后的编辑器 UI

详细配置文档

1. 主题 (Theme)

  • theme: 用于配置用户界面的主题。
    • mode: 主题模式,可选值:
      • "system": 使用与系统外观相对应的主题。
      • "light": 使用 "light" 字段指定的主题。
      • "dark": 使用 "dark" 字段指定的主题。
    • light: 浅色模式下使用的主题名称,默认为 "One Light"。
    • dark: 深色模式下使用的主题名称,默认为 "One Dark"。
  • icon_theme: 图标主题的名称,默认为 "Zed (Default)"。

2. 基础键位绑定 (Base Keymap)

  • base_keymap: 选择一套基础的键位绑定方案,可选项包括:"VSCode", "Atom", "JetBrains", "None", "SublimeText", "TextMate"。默认为 "VSCode"。

3. 特性开关 (Features)

  • features: 用于全局启用或禁用某些特性。
    • edit_prediction_provider: 编辑预测提供者,默认为 "zed"。

4. 编辑器字体 (Buffer Font)

  • buffer_font_family: 编辑器文本渲染的字体名称,默认为 "Zed Plex Mono"。
  • buffer_font_fallbacks: 编辑器文本的备用字体,会与平台默认备用字体合并。默认为 null。
  • buffer_font_features: 编辑器文本的 OpenType 特性配置,例如可以禁用连字 ("calt": false)。
  • buffer_font_size: 编辑器文本的默认字号,默认为 15。
  • buffer_font_weight: 编辑器字体的字重,使用标准 CSS 单位 (100-900),默认为 400。
  • buffer_line_height: 编辑器的行高设置。
    • "comfortable": 舒适的行高 (1.618)。
    • "standard": 标准行高 (1.3)。
    • {"custom": 2}: 自定义行高值。
    • 默认为 "comfortable"。

5. UI 字体 (UI Font)

  • ui_font_family: UI 文本渲染的字体名称,可设置为 ".SystemUIFont" 以使用系统字体。默认为 "Zed Plex Sans"。
  • ui_font_fallbacks: UI 文本的备用字体,会与平台默认备用字体合并。默认为 null。
  • ui_font_features: UI 文本的 OpenType 特性配置,例如可以禁用连字 ("calt": false)。
  • ui_font_weight: UI 字体的字重,使用标准 CSS 单位 (100-900),默认为 400。
  • ui_font_size: UI 文本的默认字号,默认为 16。
  • agent_font_size: Agent 面板文本的默认字号,默认为 16。

6. 代码与界面显示 (Code & Interface Display)

  • unnecessary_code_fade: 未使用代码的淡出程度,默认为 0.3。
  • active_pane_modifiers: 活动窗格的样式设置。
    • magnification: 活动窗格的放大倍数,默认为 1.0 (与其他窗格大小相同)。
    • border_size: 活动窗格的内嵌边框大小(像素),默认为 0.0。
    • inactive_opacity: 非活动窗格的不透明度 (0 表示透明,1 表示不透明),值会被限制在 [0.0, 1.0] 范围内。默认为 1.0。
  • bottom_dock_layout: 底部 Dock 的布局模式,默认为 "contained"。
  • pane_split_direction_horizontal: 水平分割窗格的方向,默认为 "up"。
  • pane_split_direction_vertical: 垂直分割窗格的方向,默认为 "left"。
  • centered_layout: 居中布局相关设置。
    • left_padding: 居中布局时,中央窗格距离工作区左侧的相对宽度,默认为 0.2。
    • right_padding: 居中布局时,中央窗格距离工作区右侧的相对宽度,默认为 0.2。
  • image_viewer: 图片查看器的所有设置。
    • unit: 图片文件大小的单位,可选 "binary" (默认) 或 "decimal"。
  • multi_cursor_modifier: 添加多个光标所使用的按键,目前支持 "alt" 或 "cmd_or_ctrl" (也可用 "cmd" 和 "ctrl" 作为别名)。默认为 "alt"。
  • vim_mode: 是否启用 Vim 模式和键位绑定,默认为 false。
  • hover_popover_enabled: 鼠标悬停在编辑器中的符号上时,是否显示信息悬浮框。默认为 true。
  • hover_popover_delay: 显示信息悬浮框前的等待时间(毫秒),默认为 300。
  • cursor_blink: 编辑器中光标是否闪烁,默认为 true。
  • cursor_shape: 默认编辑器的光标形状,可选:"bar" (默认)、"block"、"underline"、"hollow"。默认为 null (即 "bar")。
  • hide_mouse: 何时隐藏编辑器或输入框中的鼠标光标。
    • "never": 从不隐藏。
    • "on_typing": 仅在输入时隐藏。
    • "on_typing_and_movement": 在输入和光标移动时隐藏。
    • 默认为 "on_typing_and_movement"。
  • snippet_sort_order: 代码片段相对于其他补全项的排序方式。
    • "top": 置于顶部。
    • "inline": 正常排序,无偏好。
    • "bottom": 置于底部。
    • 默认为 "inline"。
  • current_line_highlight: 编辑器中如何高亮当前行。
    • "none": 不高亮。
    • "gutter": 高亮行号区域。
    • "line": 高亮编辑区域。
    • "all": 高亮整行 (默认)。
    • 默认为 "all"。
  • selection_highlight: 是否高亮编辑器中所选文本的所有出现之处,默认为 true。
  • lsp_highlight_debounce: 根据当前光标位置从语言服务器查询高亮的防抖延迟时间(毫秒),默认为 75。
  • show_completions_on_input: 在编辑器中输入时是否自动弹出补全菜单(无需显式请求),默认为 true。
  • show_completion_documentation: 是否在补全菜单中显示项目的内联和旁边文档,默认为 true。
  • auto_signature_help: 在括号内时,是否在编辑器中显示方法签名,默认为 false。
  • show_signature_help_after_edits: 在补全或插入括号对后是否显示签名帮助。若 auto_signature_help 启用,此项也会被视为启用。默认为 false。
  • go_to_definition_fallback: 当“转到定义”无结果时的操作。
    • "none": 无操作。
    • "find_all_references": 查找相同符号的引用 (默认)。
    • 默认为 "find_all_references"。
  • diagnostics_max_severity: 用于过滤编辑器中显示的诊断信息的级别。可选值:"off", "error", "warning", "info", "hint", null (允许所有,默认)。这仅影响编辑器渲染,不影响诊断获取和项目诊断编辑器的功能。
  • show_wrap_guides: 是否在编辑器中显示换行参考线(垂直标尺)。默认为 true。
  • wrap_guides: 在编辑器中显示换行参考线的字符计数位置数组,默认为 []。
  • redact_private_values: 是否在私有文件中隐藏变量值的可视化显示,默认为 false。
  • expand_excerpt_lines: 在多缓冲区中展开摘要的默认行数,默认为 5。
  • private_files: 用于匹配文件路径以确定文件是否为私有的 glob 模式列表。默认为 ["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]。
  • use_on_type_format: 是否在每次输入“触发”符号(由 LSP 服务器能力定义)后使用额外的 LSP 查询来格式化(和修正)代码。默认为 true。
  • use_autoclose: 输入左括号、方括号、花括号、单引号或双引号时,是否自动添加匹配的右侧字符。默认为 true。
  • use_auto_surround: 输入左括号、方括号、花括号、单引号或双引号时,是否自动包围选定的文本。默认为 true。
  • auto_indent_on_paste: 粘贴内容时是否根据上下文调整缩进,默认为 true。
  • always_treat_brackets_as_autoclosed: 控制编辑器如何处理自动关闭的字符。若为 false (默认),仅对自动插入的字符进行跳过和自动移除。若为 true,则无论如何插入,关闭字符总是被跳过和自动移除。
  • allow_rewrap: 控制 editor::Rewrap 操作在当前语言范围内的允许位置。
    • "in_comments": 仅允许在注释中重排。
    • "in_selections": 仅允许在当前选区中重排。
    • "anywhere": 允许在任何地方重排。
    • 默认为 "in_comments"。
  • show_edit_predictions: 控制编辑预测是立即显示 (true) 还是通过触发 editor::ShowEditPrediction 手动显示 (false)。默认为 true。
  • edit_predictions_disabled_in: 控制在给定语言范围(例如 ["string", "comment"])中是否显示编辑预测。默认为 []。
  • show_whitespaces: 是否在编辑器中显示制表符和空格。
    • "selection": 仅为选定文本绘制 (默认)。
    • "none": 不绘制任何制表符或空格。
    • "all": 绘制所有不可见符号。
    • "boundary": 仅在边界处绘制空白字符。
    • 默认为 "selection"。
  • middle_click_paste: 是否在 Linux 上启用鼠标中键粘贴,默认为 true。
  • double_click_in_multibuffer: 双击多缓冲区中某个摘要(单个缓冲区的一部分)时的行为。
    • "select": 行为类似常规缓冲区并选择整个单词 (默认)。
    • "open": 在新标签页中将点击的摘要作为新缓冲区打开。
    • 默认为 "select"。
  • indent_guides: 缩进参考线相关设置。
    • enabled: 是否在编辑器中显示缩进参考线,默认为 true。
    • line_width: 缩进参考线的宽度(像素,1-10),默认为 1。
    • active_line_width: 活动缩进参考线的宽度(像素,1-10),默认为 1。
    • coloring: 缩进参考线的着色方式,可选 "disabled", "fixed" (默认), "indent_aware"。
    • background_coloring: 缩进参考线背景的着色方式,可选 "disabled" (默认), "indent_aware"。
  • relative_line_numbers: 是否显示相对行号,默认为 false。
  • search_wrap: 如果禁用,搜索结果不会在文件末尾回绕。默认为 true。
  • seed_search_query_from_cursor: 何时根据光标下的文本填充新的搜索查询。
    • "always": 总是用光标下的单词填充搜索查询 (默认)。
    • "selection": 仅在选定文本时填充搜索查询。
    • "never": 从不填充搜索查询。
    • 默认为 "always"。
  • use_smartcase_search: 启用后,根据查询自动调整搜索大小写敏感性。如果查询包含任何大写字母,则搜索变为大小写敏感;如果仅包含小写字母,则搜索变为大小写不敏感。默认为 false。

7. 应用行为 (Application Behavior)

  • confirm_quit: 退出 Zed 前是否确认,默认为 false。
  • restore_on_startup: 打开新的 Zed 实例时是否恢复上次关闭的项目,默认为 "last_session"。
  • restore_on_file_reopen: 再次打开文件时是否尝试恢复先前文件的状态(每个窗格分别存储)。默认为 true。
  • drop_target_size: 编辑器中拖放目标的大小,默认为 0.2。
  • when_closing_with_no_tabs: 当在没有标签页的窗口上使用“关闭活动项”时是否关闭窗口。
    • "platform_default": 使用当前平台的约定。
    • "close_window": 总是关闭窗口。
    • "keep_window_open": 从不关闭窗口。
    • 默认为 "platform_default"。
  • on_last_window_closed: 关闭最后一个窗口时的操作。
    • "platform_default": 使用当前平台的约定。
    • "quit_app": 总是退出应用。
    • 默认为 "platform_default"。
  • use_system_path_prompts: 是否使用系统提供的对话框进行“打开”和“另存为”。若为 false,Zed 将使用内置的键盘优先选择器。默认为 true。
  • use_system_prompts: 是否使用系统提供的对话框进行提示(如确认提示)。若为 false,Zed 将使用其内置提示。注意,在 Linux 上,此选项被忽略,Zed 将始终使用内置提示。默认为 true。
  • auto_update: 是否自动更新 Zed。在 Linux 上通过包管理器安装时,此设置可能被忽略。默认为 true。
  • telemetry: 控制 Zed 收集的信息。
    • diagnostics: 发送调试信息,如崩溃报告。默认为 true。
    • metrics: 发送匿名使用数据,如您正在使用的语言。默认为 true。
  • proxy: 设置要使用的代理。代理协议由 URI方案指定 (例如 "socks5h://localhost:10808")。默认为 null。

8. 面板与工具栏 (Panels & Toolbars)

  • Calls (通话)
    • mute_on_join: 加入通话时是否默认麦克风静音,默认为 false。
    • share_on_join: 当您是第一个加入频道时是否共享您的项目,默认为 false。
  • Toolbar (工具栏)
    • breadcrumbs: 是否显示面包屑导航,默认为 true。
    • quick_actions: 是否显示快捷操作按钮,默认为 true。
    • selections_menu: 是否在编辑器工具栏中显示选择菜单,默认为 true。
    • agent_review: 是否在编辑器工具栏中显示代理审查按钮,默认为 true。
  • Titlebar (标题栏)
    • show_branch_icon: 是否在标题栏的分支切换器旁边显示分支图标,默认为 false。
    • show_branch_name: 是否在标题栏中显示分支名称按钮,默认为 true。
    • show_project_items: 是否在标题栏中显示项目主机和名称,默认为 true。
    • show_onboarding_banner: 是否在标题栏中显示引导横幅,默认为 true。
    • show_user_picture: 是否在标题栏中显示用户图片,默认为 true。
  • Scrollbar (滚动条)
    • show: 何时在编辑器中显示滚动条,可选 "auto" (默认), "system", "always", "never"。
    • cursors: 是否在滚动条中显示光标位置,默认为 true。
    • git_diff: 是否在滚动条中显示 git diff 指示器,默认为 true。
    • search_results: 是否在滚动条中显示缓冲区搜索结果,默认为 true。
    • selected_text: 是否在滚动条中显示选定文本的出现位置,默认为 true。
    • selected_symbol: 是否在滚动条中显示选定符号的出现位置,默认为 true。
    • diagnostics: 在滚动条中显示的诊断指示器级别,可选 "none" (或 false), "error", "warning", "information", "all" (或 true, 默认)。
    • axes: 强制启用或禁用各轴的滚动条。
      • horizontal: false 时强制禁用水平滚动条,默认为 true。
      • vertical: false 时强制禁用垂直滚动条,默认为 true。
  • Minimap (小地图)
    • show: 何时在编辑器中显示小地图,可选 "auto", "always", "never" (默认)。
    • thumb: 何时显示小地图缩略图,可选 "hover", "always" (默认)。
    • thumb_border: 小地图缩略图边框样式,可选 "full", "left_open" (默认), "right_open", "left_only", "none"。
    • current_line_highlight: 小地图中如何高亮当前行,null (默认) 表示继承编辑器设置,"line" 或 "all" 表示高亮,"gutter" 或 "none" 表示不高亮。
  • Gutter (行号栏)
    • line_numbers: 是否在行号栏显示行号,默认为 true。
    • runnables: 是否在行号栏显示可运行按钮,默认为 true。
    • breakpoints: 是否在行号栏显示断点,默认为 true。
    • folds: 是否在行号栏显示折叠按钮,默认为 true。
  • Search (搜索)
    • button: 是否在状态栏显示项目搜索按钮,默认为 true。
    • whole_word: 默认是否启用全词匹配,默认为 false。
    • case_sensitive: 默认是否启用大小写敏感,默认为 false。
    • include_ignored: 默认是否包含忽略的文件,默认为 false。
    • regex: 默认是否启用正则表达式,默认为 false。
  • Inlay Hints (内嵌提示)
    • enabled: 全局开关,是否启用内嵌提示,默认为 false。
    • show_type_hints: 是否显示类型提示,默认为 true。
    • show_parameter_hints: 是否显示参数提示,默认为 true。
    • show_other_hints: 是否显示其他提示 (对应 null/None LSP 提示类型),默认为 true。
    • show_background: 是否为内嵌提示显示背景,默认为 false。
    • edit_debounce_ms: 编辑缓冲区后请求提示的等待时间(毫秒),0 表示禁用防抖。默认为 700。
    • scroll_debounce_ms: 滚动缓冲区后请求提示的等待时间(毫秒),0 表示禁用防抖。默认为 50。
    • toggle_on_modifiers_press: 按下时切换内嵌提示可见性的修饰键组合。默认为所有修饰键 false。
  • Project Panel (项目面板)
    • button: 是否在状态栏显示项目面板按钮,默认为 true。
    • hide_gitignore: 是否在项目面板中隐藏 gitignore 条目,默认为 false。
    • default_width: 项目面板的默认宽度,默认为 240。
    • dock: 项目面板停靠位置,可选 "left" (默认) 或 "right"。
    • entry_spacing: 项目面板中工作树条目的间距,可选 "comfortable" (默认) 或 "standard"。
    • file_icons: 是否在项目面板中显示文件图标,默认为 true。
    • folder_icons: 是否在项目面板中为目录显示文件夹图标或雪佛龙图标,默认为 true。
    • git_status: 是否在项目面板中显示 git 状态,默认为 true。
    • indent_size: 嵌套项目的缩进量,默认为 20。
    • auto_reveal_entries: 当相应项目条目变为活动状态时,是否在项目面板中自动显示。Gitignored 条目从不自动显示。默认为 true。
    • auto_fold_dirs: 当目录内部只有一个子目录时,是否自动折叠目录并显示紧凑文件夹 (例如 "a/b/c")。默认为 true。
    • scrollbar: 滚动条相关设置,show 默认为 null (继承编辑器设置)。
    • show_diagnostics: 在项目面板中标记包含诊断错误/警告的文件,可选 "off", "errors", "all" (默认)。
    • indent_guides: 项目面板中缩进参考线的设置,show 可选 "always" (默认) 或 "never"。
  • Outline Panel (大纲面板)
    • button: 是否在状态栏显示大纲面板按钮,默认为 true。
    • default_width: 大纲面板的默认宽度,默认为 300。
    • dock: 大纲面板停靠位置,可选 "left" (默认) 或 "right"。
    • file_icons: 是否在大纲面板中显示文件图标,默认为 true。
    • folder_icons: 是否在大纲面板中为目录显示文件夹图标或雪佛龙图标,默认为 true。
    • git_status: 是否在大纲面板中显示 git 状态,默认为 true。
    • indent_size: 嵌套项目的缩进量,默认为 20。
    • auto_reveal_entries: 当相应大纲条目变为活动状态时,是否在大纲面板中自动显示。Gitignored 条目从不自动显示。默认为 true。
    • auto_fold_dirs: 当目录内部只有一个目录时,是否自动折叠目录。默认为 true。
    • indent_guides: 大纲面板中缩进参考线的设置,show 可选 "always" (默认) 或 "never"。
    • scrollbar: 滚动条相关设置,show 默认为 null (继承编辑器设置)。
  • Collaboration Panel (协作面板)
    • button: 是否在状态栏显示协作面板按钮,默认为 true。
    • dock: 协作面板停靠位置,可选 "left" (默认) 或 "right"。
    • default_width: 协作面板的默认宽度,默认为 240。
  • Chat Panel (聊天面板)
    • button: 何时在状态栏显示聊天面板按钮,可选 "never", "always", "when_in_call" (默认),或布尔值 (解释为 "never"/"always")。
    • dock: 聊天面板停靠位置,可选 "left" 或 "right" (默认)。
    • default_width: 聊天面板的默认宽度,默认为 240。
  • Git Panel (Git 面板)
    • button: 是否在状态栏显示 Git 面板按钮,默认为 true。
    • dock: Git 面板显示位置,可选 "left" (默认) 或 "right"。
    • default_width: Git 面板的默认宽度,默认为 360。
    • status_style: 面板中 git 状态指示器的样式,默认为 "icon"。
    • fallback_branch_name: 如果 init.defaultBranch 未设置,则使用的分支名称,默认为 "main"。
    • sort_by_path: 是否按路径或状态 (默认) 对面板中的条目进行排序,默认为 false。
    • scrollbar: Git 面板滚动条相关设置,show 默认为 null (继承编辑器滚动条设置)。
  • Message Editor (消息编辑器)
    • auto_replace_emoji_shortcode: 是否自动将表情符号快捷码替换为表情符号字符 (例如 :wave: 替换为 👋),默认为 true。
  • Notification Panel (通知面板)
    • button: 是否在状态栏显示通知面板按钮,默认为 true。
    • dock: 通知面板停靠位置,可选 "left" 或 "right" (默认)。
    • default_width: 通知面板的默认宽度,默认为 380。
  • Agent (AI 助手)
    • version: 此设置的版本,默认为 "2"。
    • enabled: 是否启用 Agent,默认为 true。
    • preferred_completion_mode: 如果可用,新线程启动时的补全模式,可选 "normal" (默认) 或 "max"。
    • button: 是否在状态栏显示 Agent 面板按钮,默认为 true。
    • dock: Agent 面板停靠位置,可选 "left", "right" (默认) 或 "bottom"。
    • default_width: Agent 面板停靠在左侧或右侧时的默认宽度,默认为 640。
    • default_height: Agent 面板停靠在底部时的默认高度,默认为 320。
    • default_model: 创建新线程时使用的默认模型,包含 provider 和 model 字段。默认为 {"provider": "zed.dev", "model": "claude-3-7-sonnet-latest"}。
    • editor_model: 应用来自 Agent 的编辑时使用的模型,包含 provider 和 model 字段。默认为 {"provider": "zed.dev", "model": "claude-3-7-sonnet-latest"}。
    • model_parameters: 语言模型请求的附加参数列表。可以为特定提供商、模型或所有请求设置参数。
    • always_allow_tool_actions: 启用后,Agent 可以运行可能具有破坏性的操作而无需确认,默认为 false。
    • stream_edits: 启用后,Agent 将流式传输编辑,默认为 false。
    • single_file_review: 启用后,Agent 编辑将显示在单文件编辑器中以供审阅,默认为 true。
    • default_profile: 默认配置文件,默认为 "write"。
    • profiles: 配置文件定义 (write, ask, minimal),每个配置文件包含名称、是否启用所有上下文服务器以及工具列表。
    • notify_when_agent_waiting: Agent 完成响应或需要确认才能运行工具操作时显示通知的位置,可选 "primary_screen" (默认), "all_screens", "never"。
  • Slash Commands (斜杠命令)
    • docs: /docs 斜杠命令的设置。
      • enabled: 是否启用 /docs,默认为 false。
    • project: /project 斜杠命令的设置。
      • enabled: 是否启用 /project,默认为 false。
  • Tab Bar (标签栏)
    • show: 是否在编辑器中显示标签栏,默认为 true。
    • show_nav_history_buttons: 是否显示导航历史按钮,默认为 true。
    • show_tab_bar_buttons: 是否显示标签栏按钮,默认为 true。
  • Tabs (标签页)
    • git_status: 是否在编辑器标签页中显示 git 状态颜色,默认为 false。
    • close_position: 编辑器标签页上关闭按钮的位置,可选 "right" (默认), "left", "hidden"。
    • file_icons: 是否为标签页显示文件图标,默认为 false。
    • show_close_button: 标签页关闭按钮的显示行为,可选 "hover" (默认), "always", "hidden"。
    • activate_on_close: 关闭当前标签页后的操作,可选 "history" (默认), "neighbour", "left_neighbour"。
    • show_diagnostics: 在标签页中标记包含诊断错误/警告的文件。仅当文件图标也处于活动状态时显示。可选 "off" (默认), "errors", "all"。
  • Preview Tabs (预览标签页)
    • enabled: 是否启用预览标签页,默认为 true。
    • enable_preview_from_file_finder: 从文件查找器中选择文件时是否以预览模式打开标签页,默认为 false。
    • enable_preview_from_code_navigation: 使用代码导航离开标签页时,预览标签页是否被替换,默认为 false。
  • File Finder (文件查找器)
    • file_icons: 是否在文件查找器中显示文件图标,默认为 true。
    • modal_max_width: 文件查找器相对于可用窗口宽度的最大宽度,可选 "small" (默认), "medium", "large", "xlarge", "full"。
    • skip_focus_for_active_in_search: 搜索文件时,如果当前活动文件作为第一个结果出现,自动对焦是否跳过它并对焦第二个结果。默认为 true。
  • Diagnostics Panel (诊断面板)
    • button: 是否在状态栏显示项目诊断按钮,默认为 true。
    • include_warnings: 默认是否显示警告,默认为 true。
    • inline: 内联诊断设置。
      • enabled: 是否内联显示诊断,默认为 false。
      • update_debounce_ms: 上次诊断更新后显示内联诊断的延迟时间(毫秒),默认为 150。
      • padding: 源行末尾和内联诊断开始之间的填充量(以 em 宽度为单位),默认为 4。
      • min_column: 显示内联诊断的最小列。默认为 0。
      • max_severity: 内联显示的诊断的最低严重性。null (默认) 时继承编辑器的诊断最大严重性设置。
    • cargo: Cargo 诊断配置。
      • Workspace_cargo_diagnostics: 启用后,Zed 会禁用 rust-analyzer 的保存时检查,并开始单独查询 Cargo 诊断。默认为 false。
  • Terminal (终端)
    • shell: 打开终端时使用的 shell,可选 "system" (默认), 程序路径对象, 或带参数的程序路径对象。
    • dock: 终端面板停靠位置,可选 "left", "right", "bottom" (默认)。
    • default_width: 终端停靠在左侧或右侧时的默认宽度,默认为 640。
    • default_height: 终端停靠在底部时的默认高度,默认为 320。
    • working_directory: 启动终端时使用的工作目录,可选 "current_project_directory" (默认), "first_project_directory", "always_home", 或指定目录对象。
    • blinking: 终端中光标闪烁行为,可选 "off", "terminal_controlled" (默认), "on"。
    • cursor_shape: 终端的默认光标形状,可选 "block" (默认), "bar", "underline", "hollow"。默认为 null (即 "block")。
    • alternate_scroll: 是否默认激活备用滚动模式 (代码: ?1007),可选 "on" (默认), "off"。
    • option_as_meta: Option 键是否充当 Meta 键 (例如用于 emacs),默认为 false。
    • copy_on_select: 在终端中选择文本时是否自动复制到系统剪贴板,默认为 false。
    • button: 是否在状态栏显示终端按钮,默认为 true。
    • env: 添加到终端环境的键值对,默认为 {}。
    • line_height: 终端的行高,可选 "comfortable" (默认), "standard", 或自定义对象。
    • detect_venv: 是否在终端工作目录中检测并激活 python 虚拟环境。默认为开启,并配置了默认搜索目录和激活脚本。
    • toolbar: 终端工具栏设置。
      • breadcrumbs: 是否在其工具栏的面包屑导航中显示终端标题。默认为 true。
    • scrollbar: 终端滚动条相关设置,show 默认为 null (继承编辑器设置)。
    • font_size: 终端字号,默认匹配编辑器字号。
    • font_family: 终端字体,默认匹配编辑器字体。
    • font_fallbacks: 终端备用字体,默认匹配编辑器备用字体。
    • max_scroll_history_lines: 终端回滚缓冲区的最大行数,默认为 10000。
  • Debugger (调试器)
    • stepping_granularity: 步进粒度,默认为 "line"。
    • save_breakpoints: 是否保存断点,默认为 true。
    • button: 是否显示调试器按钮,默认为 true。

9. 编辑行为 (Editing Behavior)

  • scroll_beyond_last_line: 编辑器是否可以滚动超过最后一行,默认为 "one_page"。
  • vertical_scroll_margin: 滚动时光标上方/下方保留的行数,默认为 3。
  • autoscroll_on_clicks: 点击可见文本区域边缘附近时是否滚动,默认为 false。
  • horizontal_scroll_margin: 使用鼠标滚动时两侧保留的字符数,默认为 5。
  • scroll_sensitivity: 滚动灵敏度乘数,默认为 1.0。
  • remove_trailing_whitespace_on_save: 保存前是否移除行尾的任何尾随空白,默认为 true。
  • extend_comment_on_newline: 当上一行也是注释时,是否在新行以注释开始,默认为 true。
  • ensure_final_newline_on_save: 移除文件末尾仅包含空白的任何行,并确保文件末尾只有一个换行符。默认为 true。
  • format_on_save: 保存前是否执行缓冲区格式化。如果启用了带延迟的自动保存,则忽略此项。默认为 "on"。
  • formatter: 如何执行缓冲区格式化。
    • "language_server": 使用当前语言服务器。
    • {"external": {"command": "prettier", "arguments": ["--stdin-filepath", "{buffer_path}"]}}: 使用外部命令。
    • "prettier": 使用 Zed 的 Prettier 集成。
    • "auto": 默认。使用 Zed 的 Prettier 集成(如果适用),否则回退到语言服务器格式化。
    • 默认为 "auto"。
  • soft_wrap: 如何软换行长文本行。
    • "none" 或 "prefer_line" (已弃用): 通常首选单行,除非遇到过长的行。
    • "editor_width": 软换行超出编辑器的行。
    • "preferred_line_length": 在首选行长度处软换行。
    • "bounded": 在首选行长度或编辑器宽度(取较小者)处软换行。
    • 默认为 "none"。
  • preferred_line_length: 启用软换行的缓冲区中,软换行的列数,默认为 80。
  • hard_tabs: 是否使用制表符进行缩进(而不是多个空格),默认为 false。
  • tab_size: 一个制表符应占用的列数,默认为 4。
  • max_tabs: 每个窗格的最大标签页数。未设置则无限制。默认为 null。

10. 语言与服务 (Languages & Services)

  • show_call_status_icon: 是否在操作系统状态栏显示屏幕共享图标,默认为 true。
  • enable_language_server: 是否使用语言服务器提供代码智能,默认为 true。
  • linked_edits: 如果语言服务器支持,是否执行关联范围的链接编辑 (例如,编辑 HTML 开始标签时,结束标签内容也会被编辑)。默认为 true。
  • language_servers: 用于所有语言的语言服务器列表 (或禁用)。通常在特定语言基础上自定义。默认为 ["..."]。
  • autosave: 何时自动保存已编辑的缓冲区。
    • "off": 从不自动保存 (默认)。
    • "on_window_change": 当焦点从 Zed 窗口移开时保存。
    • "on_focus_change": 当焦点从特定缓冲区移开时保存。
    • {"after_delay": {"milliseconds": 500}}: 空闲一定时间后保存。
    • 默认为 "off"。
  • debuggers: 所有语言默认首选的调试器列表,默认为 []。
  • file_scan_exclusions: Zed 将完全排除的文件或 glob 模式列表。默认为常见的忽略列表 (如 .git, .DS_Store 等)。
  • file_scan_inclusions: Zed 将包含的文件或 glob 模式列表,即使被 git 忽略。file_scan_exclusions 优先于此。默认为 [".env*"]。
  • git_hosting_providers: 自定义 Git 托管提供商列表,默认为 []。
  • load_direnv: 如何加载 direnv 配置,可选 "direct" (默认) 或 "shell_hook"。
  • edit_predictions: 编辑预测相关设置。
    • disabled_globs: 应禁用编辑预测的文件 glob 模式列表。默认为包含 .env*, *.pem 等的列表。
    • mode: 何时在缓冲区中显示编辑预测预览,可选 "eager" (默认) 或 "subtle"。
    • enabled_in_text_threads: 编辑文本线程时是否启用编辑预测,默认为 true。
  • journal: 日记功能特定设置。
    • path: 存储日记条目的目录路径,默认为 "~"。
    • hour_format: 小时显示格式,可选 "hour12" (默认) 或 "hour24"。
  • code_actions_on_format: 格式化时执行的代码操作,默认为 {}。
  • tasks: 运行任务相关设置。
    • variables: 任务变量,默认为 {}。
    • enabled: 是否启用任务,默认为 true。
  • file_types: 文件类型关联,将文件名或扩展名映射到特定语言。默认为将 **/.zed/**/*.json 等识别为 JSONC,将 .env.* 识别为 Shell Script。
  • node: 安装语言服务器和 Copilot 时使用的 Node.js 和 NPM 版本设置。
    • ignore_system_version: 是否忽略系统 $PATH 中的 node 和 npm,强制 Zed 下载安装自己的版本。默认为 false。
    • path: Node 可执行文件的备用路径,默认为 null。
    • npm_path: NPM 可执行文件的备用路径,默认为 null。
  • auto_install_extensions: Zed 启动时应自动安装的扩展。默认为 {"html": true}。
  • completions: 此语言的补全处理方式。
    • words:单词补全方式,可选 "enabled", "fallback" (默认), "disabled"。
    • lsp: 是否获取 LSP 补全,默认为 true。
    • lsp_fetch_timeout_ms: 获取 LSP 补全时等待特定服务器响应的时间(毫秒),0 表示无限等待。默认为 0。
    • lsp_insert_mode: 接受 LSP 补全时替换的范围,可选 "insert", "replace", "replace_subsequence", "replace_suffix" (默认)。
  • languages: 特定语言的设置覆盖。例如,可以为 Astro, Blade, C, C++, CSS, Dart, Diff, Elixir, Elm, Erlang, Go, GraphQL, HTML, Java, JavaScript, JSON, JSONC, LaTeX, Markdown, PHP, Plain Text, Ruby, SCSS, SQL, Starlark, Svelte, TSX, Twig, TypeScript, Vue.js, XML, YAML, Zig 等语言配置特定的 language_servers, prettier 规则, tab_size, format_on_save 等。
  • language_models: 特定语言模型的设置,如 anthropic, google, ollama, openai, lmstudio, deepseek, mistral 的 API URL。
  • prettier: Zed 的 Prettier 集成设置,可以配置是否允许 Prettier 格式化以及默认 Prettier 选项。
  • jsx_tag_auto_close: JSX 标签自动关闭设置。
    • enabled: 是否启用,默认为 true。
  • lsp: LSP 特定设置,可以为特定的 LSP (如 rust-analyzer) 配置初始化选项。
  • jupyter: Jupyter 设置。
    • enabled: 是否启用,默认为 true。
    • kernel_selections: 将语言名称映射到内核名称,例如 {"python": "conda-base"}。
  • vim: Vim 设置。
    • default_mode: 默认模式,默认为 "normal"。
    • toggle_relative_line_numbers: 是否切换相对行号,默认为 false。
    • use_system_clipboard: 何时使用系统剪贴板,默认为 "always"。
    • use_multiline_find: 是否使用多行查找,默认为 false。
    • use_smartcase_find: 是否使用智能大小写查找,默认为 false。
    • highlight_on_yank_duration: yank 时高亮持续时间(毫秒),默认为 200。
    • custom_digraphs: 自定义二合字母,默认为 {}。
    • cursor_shape: 各模式下的光标形状 (normal, replace, insert, visual),默认为 {}。
  • server_url: 要连接的服务器。如果设置了 ZED_SERVER_URL 环境变量,则会覆盖此设置。默认为 "https://zed.dev"。
  • preview, nightly, stable, dev: 分别用于 Zed Preview, Nightly, Stable, Dev 版本的设置覆盖。
  • line_indicator_format: 行指示器的完整标签或短标签,可选 "short" 或 "long" (默认)。
  • command_aliases: 命令面板的别名设置,默认为 {}。
  • ssh_connections: ssh 连接配置数组,默认为 []。
  • context_servers: Agent 使用的上下文服务器配置,默认为 {}。

11. Git

  • git: Git gutter 行为配置。
    • git_gutter: 控制是否显示 git gutter,可选 "tracked_files" (默认) 或 "hide"。
    • inline_blame: 控制是否在当前焦点行内联显示 git blame 信息。
      • enabled: 是否启用,默认为 true。
      • delay_ms: 显示内联 blame 信息的延迟时间(可选)。
      • show_commit_summary: 是否在同一行显示 git 提交摘要(可选)。
      • min_column: 显示内联 blame 信息的最小列号(可选)。
    • hunk_style: git hunk 在编辑器中的可视化显示方式,可选 "staged_hollow" (默认) 或 "unstaged_hollow"。

完整配置

配置版本: Zed 版本号: 0.187.8

json
{ // The name of the Zed theme to use for the UI. // // `mode` is one of: // - "system": Use the theme that corresponds to the system's appearance // - "light": Use the theme indicated by the "light" field // - "dark": Use the theme indicated by the "dark" field "theme": { "mode": "system", "light": "One Light", "dark": "One Dark" }, "icon_theme": "Zed (Default)", // The name of a base set of key bindings to use. // This setting can take six values, each named after another // text editor: // // 1. "VSCode" // 2. "Atom" // 3. "JetBrains" // 4. "None" // 5. "SublimeText" // 6. "TextMate" "base_keymap": "VSCode", // Features that can be globally enabled or disabled "features": { // Which edit prediction provider to use. "edit_prediction_provider": "zed" }, // The name of a font to use for rendering text in the editor "buffer_font_family": "Zed Plex Mono", // Set the buffer text's font fallbacks, this will be merged with // the platform's default fallbacks. "buffer_font_fallbacks": null, // The OpenType features to enable for text in the editor. "buffer_font_features": { // Disable ligatures: // "calt": false }, // The default font size for text in the editor "buffer_font_size": 15, // The weight of the editor font in standard CSS units from 100 to 900. "buffer_font_weight": 400, // Set the buffer's line height. // May take 3 values: // 1. Use a line height that's comfortable for reading (1.618) // "buffer_line_height": "comfortable" // 2. Use a standard line height, (1.3) // "buffer_line_height": "standard", // 3. Use a custom line height // "buffer_line_height": { // "custom": 2 // }, "buffer_line_height": "comfortable", // The name of a font to use for rendering text in the UI // You can set this to ".SystemUIFont" to use the system font "ui_font_family": "Zed Plex Sans", // Set the UI's font fallbacks, this will be merged with the platform's // default font fallbacks. "ui_font_fallbacks": null, // The OpenType features to enable for text in the UI "ui_font_features": { // Disable ligatures: "calt": false }, // The weight of the UI font in standard CSS units from 100 to 900. "ui_font_weight": 400, // The default font size for text in the UI "ui_font_size": 16, // The default font size for text in the agent panel "agent_font_size": 16, // How much to fade out unused code. "unnecessary_code_fade": 0.3, // Active pane styling settings. "active_pane_modifiers": { // The factor to grow the active pane by. Defaults to 1.0 // which gives the same size as all other panes. "magnification": 1.0, // Inset border size of the active pane, in pixels. "border_size": 0.0, // Opacity of the inactive panes. 0 means transparent, 1 means opaque. // Values are clamped to the [0.0, 1.0] range. "inactive_opacity": 1.0 }, // Layout mode of the bottom dock. Defaults to "contained" "bottom_dock_layout": "contained", // The direction that you want to split panes horizontally. Defaults to "up" "pane_split_direction_horizontal": "up", // The direction that you want to split panes horizontally. Defaults to "left" "pane_split_direction_vertical": "left", // Centered layout related settings. "centered_layout": { // The relative width of the left padding of the central pane from the // workspace when the centered layout is used. "left_padding": 0.2, // The relative width of the right padding of the central pane from the // workspace when the centered layout is used. "right_padding": 0.2 }, // All settings related to the image viewer. "image_viewer": { // The unit for image file sizes. // By default we're setting it to binary. // The second option is decimal. "unit": "binary" }, // The key to use for adding multiple cursors // Currently "alt" or "cmd_or_ctrl" (also aliased as // "cmd" and "ctrl") are supported. "multi_cursor_modifier": "alt", // Whether to enable vim modes and key bindings. "vim_mode": false, // Whether to show the informational hover box when moving the mouse // over symbols in the editor. "hover_popover_enabled": true, // Time to wait in milliseconds before showing the informational hover box. "hover_popover_delay": 300, // Whether to confirm before quitting Zed. "confirm_quit": false, // Whether to restore last closed project when fresh Zed instance is opened. "restore_on_startup": "last_session", // Whether to attempt to restore previous file's state when opening it again. // The state is stored per pane. // When disabled, defaults are applied instead of the state restoration. // // E.g. for editors, selections, folds and scroll positions are restored, if the same file is closed and, later, opened again in the same pane. // When disabled, a single selection in the very beginning of the file, zero scroll position and no folds state is used as a default. // // Default: true "restore_on_file_reopen": true, // Size of the drop target in the editor. "drop_target_size": 0.2, // Whether the window should be closed when using 'close active item' on a window with no tabs. // May take 3 values: // 1. Use the current platform's convention // "when_closing_with_no_tabs": "platform_default" // 2. Always close the window: // "when_closing_with_no_tabs": "close_window", // 3. Never close the window // "when_closing_with_no_tabs": "keep_window_open", "when_closing_with_no_tabs": "platform_default", // What to do when the last window is closed. // May take 2 values: // 1. Use the current platform's convention // "on_last_window_closed": "platform_default" // 2. Always quit the application // "on_last_window_closed": "quit_app", "on_last_window_closed": "platform_default", // Whether to use the system provided dialogs for Open and Save As. // When set to false, Zed will use the built-in keyboard-first pickers. "use_system_path_prompts": true, // Whether to use the system provided dialogs for prompts, such as confirmation // prompts. // When set to false, Zed will use its built-in prompts. Note that on Linux, // this option is ignored and Zed will always use the built-in prompts. "use_system_prompts": true, // Whether the cursor blinks in the editor. "cursor_blink": true, // Cursor shape for the default editor. // 1. A vertical bar // "bar" // 2. A block that surrounds the following character // "block" // 3. An underline / underscore that runs along the following character // "underline" // 4. A box drawn around the following character // "hollow" // // Default: not set, defaults to "bar" "cursor_shape": null, // Determines when the mouse cursor should be hidden in an editor or input box. // // 1. Never hide the mouse cursor: // "never" // 2. Hide only when typing: // "on_typing" // 3. Hide on both typing and cursor movement: // "on_typing_and_movement" "hide_mouse": "on_typing_and_movement", // Determines how snippets are sorted relative to other completion items. // // 1. Place snippets at the top of the completion list: // "top" // 2. Place snippets normally without any preference: // "inline" // 3. Place snippets at the bottom of the completion list: // "bottom" "snippet_sort_order": "inline", // How to highlight the current line in the editor. // // 1. Don't highlight the current line: // "none" // 2. Highlight the gutter area: // "gutter" // 3. Highlight the editor area: // "line" // 4. Highlight the full line (default): // "all" "current_line_highlight": "all", // Whether to highlight all occurrences of the selected text in an editor. "selection_highlight": true, // The debounce delay before querying highlights from the language // server based on the current cursor location. "lsp_highlight_debounce": 75, // Whether to pop the completions menu while typing in an editor without // explicitly requesting it. "show_completions_on_input": true, // Whether to display inline and alongside documentation for items in the // completions menu "show_completion_documentation": true, // Show method signatures in the editor, when inside parentheses. "auto_signature_help": false, // Whether to show the signature help after completion or a bracket pair inserted. // If `auto_signature_help` is enabled, this setting will be treated as enabled also. "show_signature_help_after_edits": false, // What to do when go to definition yields no results. // // 1. Do nothing: `none` // 2. Find references for the same symbol: `find_all_references` (default) "go_to_definition_fallback": "find_all_references", // Which level to use to filter out diagnostics displayed in the editor. // // Affects the editor rendering only, and does not interrupt // the functionality of diagnostics fetching and project diagnostics editor. // Which files containing diagnostic errors/warnings to mark in the tabs. // Diagnostics are only shown when file icons are also active. // This setting only works when can take the following three values: // // Which diagnostic indicators to show in the scrollbar, their level should be more or equal to the specified severity level. // Possible values: // - "off" — no diagnostics are allowed // - "error" // - "warning" // - "info" // - "hint" // - null — allow all diagnostics (default) "diagnostics_max_severity": null, // Whether to show wrap guides (vertical rulers) in the editor. // Setting this to true will show a guide at the 'preferred_line_length' value // if 'soft_wrap' is set to 'preferred_line_length', and will show any // additional guides as specified by the 'wrap_guides' setting. "show_wrap_guides": true, // Character counts at which to show wrap guides in the editor. "wrap_guides": [], // Hide the values of in variables from visual display in private files "redact_private_values": false, // The default number of lines to expand excerpts in the multibuffer by. "expand_excerpt_lines": 5, // Globs to match against file paths to determine if a file is private. "private_files": ["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"], // Whether to use additional LSP queries to format (and amend) the code after // every "trigger" symbol input, defined by LSP server capabilities. "use_on_type_format": true, // Whether to automatically add matching closing characters when typing // opening parenthesis, bracket, brace, single or double quote characters. // For example, when you type (, Zed will add a closing ) at the correct position. "use_autoclose": true, // Whether to automatically surround selected text when typing opening parenthesis, // bracket, brace, single or double quote characters. // For example, when you select text and type (, Zed will surround the text with (). "use_auto_surround": true, // Whether indentation of pasted content should be adjusted based on the context. "auto_indent_on_paste": true, // Controls how the editor handles the autoclosed characters. // When set to `false`(default), skipping over and auto-removing of the closing characters // happen only for auto-inserted characters. // Otherwise(when `true`), the closing characters are always skipped over and auto-removed // no matter how they were inserted. "always_treat_brackets_as_autoclosed": false, // Controls where the `editor::Rewrap` action is allowed in the current language scope. // // This setting can take three values: // // 1. Only allow rewrapping in comments: // "in_comments" // 2. Only allow rewrapping in the current selection(s): // "in_selections" // 3. Allow rewrapping anywhere: // "anywhere" // // When using values other than `in_comments`, it is possible for the rewrapping to produce code // that is syntactically invalid. Keep this in mind when selecting which behavior you would like // to use. // // Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere. "allow_rewrap": "in_comments", // Controls whether edit predictions are shown immediately (true) // or manually by triggering `editor::ShowEditPrediction` (false). "show_edit_predictions": true, // Controls whether edit predictions are shown in a given language scope. // Example: ["string", "comment"] "edit_predictions_disabled_in": [], // Whether to show tabs and spaces in the editor. // This setting can take four values: // // 1. Draw tabs and spaces only for the selected text (default): // "selection" // 2. Do not draw any tabs or spaces: // "none" // 3. Draw all invisible symbols: // "all" // 4. Draw whitespaces at boundaries only: // "boundary" // For a whitespace to be on a boundary, any of the following conditions need to be met: // - It is a tab // - It is adjacent to an edge (start or end) // - It is adjacent to a whitespace (left or right) "show_whitespaces": "selection", // Settings related to calls in Zed "calls": { // Join calls with the microphone live by default "mute_on_join": false, // Share your project when you are the first to join a channel "share_on_join": false }, // Toolbar related settings "toolbar": { // Whether to show breadcrumbs. "breadcrumbs": true, // Whether to show quick action buttons. "quick_actions": true, // Whether to show the Selections menu in the editor toolbar. "selections_menu": true, // Whether to show agent review buttons in the editor toolbar. "agent_review": true }, // Titlebar related settings "title_bar": { // Whether to show the branch icon beside branch switcher in the titlebar. "show_branch_icon": false, // Whether to show the branch name button in the titlebar. "show_branch_name": true, // Whether to show the project host and name in the titlebar. "show_project_items": true, // Whether to show onboarding banners in the titlebar. "show_onboarding_banner": true, // Whether to show user picture in the titlebar. "show_user_picture": true }, // Scrollbar related settings "scrollbar": { // When to show the scrollbar in the editor. // This setting can take four values: // // 1. Show the scrollbar if there's important information or // follow the system's configured behavior (default): // "auto" // 2. Match the system's configured behavior: // "system" // 3. Always show the scrollbar: // "always" // 4. Never show the scrollbar: // "never" "show": "auto", // Whether to show cursor positions in the scrollbar. "cursors": true, // Whether to show git diff indicators in the scrollbar. "git_diff": true, // Whether to show buffer search results in the scrollbar. "search_results": true, // Whether to show selected text occurrences in the scrollbar. "selected_text": true, // Whether to show selected symbol occurrences in the scrollbar. "selected_symbol": true, // Which diagnostic indicators to show in the scrollbar: // - "none" or false: do not show diagnostics // - "error": show only errors // - "warning": show only errors and warnings // - "information": show only errors, warnings, and information // - "all" or true: show all diagnostics "diagnostics": "all", // Forcefully enable or disable the scrollbar for each axis "axes": { // When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings. "horizontal": true, // When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings. "vertical": true } }, // Minimap related settings "minimap": { // When to show the minimap in the editor. // This setting can take three values: // 1. Show the minimap if the editor's scrollbar is visible: // "auto" // 2. Always show the minimap: // "always" // 3. Never show the minimap: // "never" (default) "show": "never", // When to show the minimap thumb. // This setting can take two values: // 1. Show the minimap thumb if the mouse is over the minimap: // "hover" // 2. Always show the minimap thumb: // "always" (default) "thumb": "always", // How the minimap thumb border should look. // This setting can take five values: // 1. Display a border on all sides of the thumb: // "thumb_border": "full" // 2. Display a border on all sides except the left side of the thumb: // "thumb_border": "left_open" (default) // 3. Display a border on all sides except the right side of the thumb: // "thumb_border": "right_open" // 4. Display a border only on the left side of the thumb: // "thumb_border": "left_only" // 5. Display the thumb without any border: // "thumb_border": "none" "thumb_border": "left_open", // How to highlight the current line in the minimap. // This setting can take the following values: // // 1. `null` to inherit the editor `current_line_highlight` setting (default) // 2. "line" or "all" to highlight the current line in the minimap. // 3. "gutter" or "none" to not highlight the current line in the minimap. "current_line_highlight": null }, // Enable middle-click paste on Linux. "middle_click_paste": true, // What to do when multibuffer is double clicked in some of its excerpts // (parts of singleton buffers). // May take 2 values: // 1. Behave as a regular buffer and select the whole word (default). // "double_click_in_multibuffer": "select" // 2. Open the excerpt clicked as a new buffer in the new tab. // "double_click_in_multibuffer": "open", // For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking. "double_click_in_multibuffer": "select", "gutter": { // Whether to show line numbers in the gutter. "line_numbers": true, // Whether to show runnables buttons in the gutter. "runnables": true, // Whether to show breakpoints in the gutter. "breakpoints": true, // Whether to show fold buttons in the gutter. "folds": true }, "indent_guides": { // Whether to show indent guides in the editor. "enabled": true, // The width of the indent guides in pixels, between 1 and 10. "line_width": 1, // The width of the active indent guide in pixels, between 1 and 10. "active_line_width": 1, // Determines how indent guides are colored. // This setting can take the following three values: // // 1. "disabled" // 2. "fixed" // 3. "indent_aware" "coloring": "fixed", // Determines how indent guide backgrounds are colored. // This setting can take the following two values: // // 1. "disabled" // 2. "indent_aware" "background_coloring": "disabled" }, // Whether the editor will scroll beyond the last line. "scroll_beyond_last_line": "one_page", // The number of lines to keep above/below the cursor when scrolling. "vertical_scroll_margin": 3, // Whether to scroll when clicking near the edge of the visible text area. "autoscroll_on_clicks": false, // The number of characters to keep on either side when scrolling with the mouse "horizontal_scroll_margin": 5, // Scroll sensitivity multiplier. This multiplier is applied // to both the horizontal and vertical delta values while scrolling. "scroll_sensitivity": 1.0, "relative_line_numbers": false, // If 'search_wrap' is disabled, search result do not wrap around the end of the file. "search_wrap": true, // Search options to enable by default when opening new project and buffer searches. "search": { // Whether to show the project search button in the status bar. "button": true, "whole_word": false, "case_sensitive": false, "include_ignored": false, "regex": false }, // When to populate a new search's query based on the text under the cursor. // This setting can take the following three values: // // 1. Always populate the search query with the word under the cursor (default). // "always" // 2. Only populate the search query when there is text selected // "selection" // 3. Never populate the search query // "never" "seed_search_query_from_cursor": "always", // When enabled, automatically adjusts search case sensitivity based on your query. // If your search query contains any uppercase letters, the search becomes case-sensitive; // if it contains only lowercase letters, the search becomes case-insensitive. "use_smartcase_search": false, // Inlay hint related settings "inlay_hints": { // Global switch to toggle hints on and off, switched off by default. "enabled": false, // Toggle certain types of hints on and off, all switched on by default. "show_type_hints": true, "show_parameter_hints": true, // Corresponds to null/None LSP hint type value. "show_other_hints": true, // Whether to show a background for inlay hints. // // If set to `true`, the background will use the `hint.background` color from the current theme. "show_background": false, // Time to wait after editing the buffer, before requesting the hints, // set to 0 to disable debouncing. "edit_debounce_ms": 700, // Time to wait after scrolling the buffer, before requesting the hints, // set to 0 to disable debouncing. "scroll_debounce_ms": 50, // A set of modifiers which, when pressed, will toggle the visibility of inlay hints. // If the set if empty or not all the modifiers specified are pressed, inlay hints will not be toggled. "toggle_on_modifiers_press": { "control": false, "shift": false, "alt": false, "platform": false, "function": false } }, "project_panel": { // Whether to show the project panel button in the status bar "button": true, // Whether to hide the gitignore entries in the project panel. "hide_gitignore": false, // Default width of the project panel. "default_width": 240, // Where to dock the project panel. Can be 'left' or 'right'. "dock": "left", // Spacing between worktree entries in the project panel. Can be 'comfortable' or 'standard'. "entry_spacing": "comfortable", // Whether to show file icons in the project panel. "file_icons": true, // Whether to show folder icons or chevrons for directories in the project panel. "folder_icons": true, // Whether to show the git status in the project panel. "git_status": true, // Amount of indentation for nested items. "indent_size": 20, // Whether to reveal it in the project panel automatically, // when a corresponding project entry becomes active. // Gitignored entries are never auto revealed. "auto_reveal_entries": true, // Whether to fold directories automatically and show compact folders // (e.g. "a/b/c" ) when a directory has only one subdirectory inside. "auto_fold_dirs": true, // Scrollbar-related settings "scrollbar": { // When to show the scrollbar in the project panel. // This setting can take five values: // // 1. null (default): Inherit editor settings // 2. Show the scrollbar if there's important information or // follow the system's configured behavior (default): // "auto" // 3. Match the system's configured behavior: // "system" // 4. Always show the scrollbar: // "always" // 5. Never show the scrollbar: // "never" "show": null }, // Which files containing diagnostic errors/warnings to mark in the project panel. // This setting can take the following three values: // // 1. Do not mark any files: // "off" // 2. Only mark files with errors: // "errors" // 3. Mark files with errors and warnings: // "all" "show_diagnostics": "all", // Settings related to indent guides in the project panel. "indent_guides": { // When to show indent guides in the project panel. // This setting can take two values: // // 1. Always show indent guides: // "always" // 2. Never show indent guides: // "never" "show": "always" } }, "outline_panel": { // Whether to show the outline panel button in the status bar "button": true, // Default width of the outline panel. "default_width": 300, // Where to dock the outline panel. Can be 'left' or 'right'. "dock": "left", // Whether to show file icons in the outline panel. "file_icons": true, // Whether to show folder icons or chevrons for directories in the outline panel. "folder_icons": true, // Whether to show the git status in the outline panel. "git_status": true, // Amount of indentation for nested items. "indent_size": 20, // Whether to reveal it in the outline panel automatically, // when a corresponding outline entry becomes active. // Gitignored entries are never auto revealed. "auto_reveal_entries": true, // Whether to fold directories automatically // when a directory has only one directory inside. "auto_fold_dirs": true, // Settings related to indent guides in the outline panel. "indent_guides": { // When to show indent guides in the outline panel. // This setting can take two values: // // 1. Always show indent guides: // "always" // 2. Never show indent guides: // "never" "show": "always" }, // Scrollbar-related settings "scrollbar": { // When to show the scrollbar in the project panel. // This setting can take five values: // // 1. null (default): Inherit editor settings // 2. Show the scrollbar if there's important information or // follow the system's configured behavior (default): // "auto" // 3. Match the system's configured behavior: // "system" // 4. Always show the scrollbar: // "always" // 5. Never show the scrollbar: // "never" "show": null } }, "collaboration_panel": { // Whether to show the collaboration panel button in the status bar. "button": true, // Where to dock the collaboration panel. Can be 'left' or 'right'. "dock": "left", // Default width of the collaboration panel. "default_width": 240 }, "chat_panel": { // When to show the chat panel button in the status bar. // Can be 'never', 'always', or 'when_in_call', // or a boolean (interpreted as 'never'/'always'). "button": "when_in_call", // Where to the chat panel. Can be 'left' or 'right'. "dock": "right", // Default width of the chat panel. "default_width": 240 }, "git_panel": { // Whether to show the git panel button in the status bar. "button": true, // Where to show the git panel. Can be 'left' or 'right'. "dock": "left", // Default width of the git panel. "default_width": 360, // Style of the git status indicator in the panel. // // Default: icon "status_style": "icon", // What branch name to use if init.defaultBranch // is not set // // Default: main "fallback_branch_name": "main", // Whether to sort entries in the panel by path // or by status (the default). // // Default: false "sort_by_path": false, "scrollbar": { // When to show the scrollbar in the git panel. // // Default: inherits editor scrollbar settings "show": null } }, "message_editor": { // Whether to automatically replace emoji shortcodes with emoji characters. // For example: typing `:wave:` gets replaced with `👋`. "auto_replace_emoji_shortcode": true }, "notification_panel": { // Whether to show the notification panel button in the status bar. "button": true, // Where to dock the notification panel. Can be 'left' or 'right'. "dock": "right", // Default width of the notification panel. "default_width": 380 }, "agent": { // Version of this setting. "version": "2", // Whether the agent is enabled. "enabled": true, /// What completion mode to start new threads in, if available. Can be 'normal' or 'max'. "preferred_completion_mode": "normal", // Whether to show the agent panel button in the status bar. "button": true, // Where to dock the agent panel. Can be 'left', 'right' or 'bottom'. "dock": "right", // Default width when the agent panel is docked to the left or right. "default_width": 640, // Default height when the agent panel is docked to the bottom. "default_height": 320, // The default model to use when creating new threads. "default_model": { // The provider to use. "provider": "zed.dev", // The model to use. "model": "claude-3-7-sonnet-latest" }, // The model to use when applying edits from the agent. "editor_model": { // The provider to use. "provider": "zed.dev", // The model to use. "model": "claude-3-7-sonnet-latest" }, // Additional parameters for language model requests. When making a request to a model, parameters will be taken // from the last entry in this list that matches the model's provider and name. In each entry, both provider // and model are optional, so that you can specify parameters for either one. "model_parameters": [ // To set parameters for all requests to OpenAI models: // { // "provider": "openai", // "temperature": 0.5 // } // // To set parameters for all requests in general: // { // "temperature": 0 // } // // To set parameters for a specific provider and model: // { // "provider": "zed.dev", // "model": "claude-3-7-sonnet-latest", // "temperature": 1.0 // } ], // When enabled, the agent can run potentially destructive actions without asking for your confirmation. "always_allow_tool_actions": false, // When enabled, the agent will stream edits. "stream_edits": false, // When enabled, agent edits will be displayed in single-file editors for review "single_file_review": true, "default_profile": "write", "profiles": { "write": { "name": "Write", "enable_all_context_servers": true, "tools": { "copy_path": true, "create_directory": true, "create_file": true, "delete_path": true, "diagnostics": true, "edit_file": true, "fetch": true, "list_directory": true, "move_path": true, "now": true, "find_path": true, "read_file": true, "grep": true, "terminal": true, "thinking": true, "web_search": true } }, "ask": { "name": "Ask", // We don't know which of the context server tools are safe for the "Ask" profile, so we don't enable them by default. // "enable_all_context_servers": true, "tools": { "contents": true, "diagnostics": true, "fetch": true, "list_directory": true, "now": true, "find_path": true, "read_file": true, "open": true, "grep": true, "thinking": true, "web_search": true } }, "minimal": { "name": "Minimal", "enable_all_context_servers": false, "tools": {} } }, // Where to show notifications when the agent has either completed // its response, or else needs confirmation before it can run a // tool action. // "primary_screen" - Show the notification only on your primary screen (default) // "all_screens" - Show these notifications on all screens // "never" - Never show these notifications "notify_when_agent_waiting": "primary_screen" }, // The settings for slash commands. "slash_commands": { // Settings for the `/docs` slash command. "docs": { // Whether `/docs` is enabled. "enabled": false }, // Settings for the `/project` slash command. "project": { // Whether `/project` is enabled. "enabled": false } }, // Whether the screen sharing icon is shown in the os status bar. "show_call_status_icon": true, // Whether to use language servers to provide code intelligence. "enable_language_server": true, // Whether to perform linked edits of associated ranges, if the language server supports it. // For example, when editing opening <html> tag, the contents of the closing </html> tag will be edited as well. "linked_edits": true, // The list of language servers to use (or disable) for all languages. // // This is typically customized on a per-language basis. "language_servers": ["..."], // When to automatically save edited buffers. This setting can // take four values. // // 1. Never automatically save: // "autosave": "off", // 2. Save when changing focus away from the Zed window: // "autosave": "on_window_change", // 3. Save when changing focus away from a specific buffer: // "autosave": "on_focus_change", // 4. Save when idle for a certain amount of time: // "autosave": { "after_delay": {"milliseconds": 500} }, "autosave": "off", // Maximum number of tabs per pane. Unset for unlimited. "max_tabs": null, // Settings related to the editor's tab bar. "tab_bar": { // Whether or not to show the tab bar in the editor "show": true, // Whether or not to show the navigation history buttons. "show_nav_history_buttons": true, // Whether or not to show the tab bar buttons. "show_tab_bar_buttons": true }, // Settings related to the editor's tabs "tabs": { // Show git status colors in the editor tabs. "git_status": false, // Position of the close button on the editor tabs. // One of: ["right", "left", "hidden"] "close_position": "right", // Whether to show the file icon for a tab. "file_icons": false, // Controls the appearance behavior of the tab's close button. // // 1. Show it just upon hovering the tab. (default) // "hover" // 2. Show it persistently. // "always" // 3. Never show it, even if hovering it. // "hidden" "show_close_button": "hover", // What to do after closing the current tab. // // 1. Activate the tab that was open previously (default) // "history" // 2. Activate the right neighbour tab if present // "neighbour" // 3. Activate the left neighbour tab if present // "left_neighbour" "activate_on_close": "history", // Which files containing diagnostic errors/warnings to mark in the tabs. // Diagnostics are only shown when file icons are also active. // This setting only works when can take the following three values: // // 1. Do not mark any files: // "off" // 2. Only mark files with errors: // "errors" // 3. Mark files with errors and warnings: // "all" "show_diagnostics": "off" }, // Settings related to preview tabs. "preview_tabs": { // Whether preview tabs should be enabled. // Preview tabs allow you to open files in preview mode, where they close automatically // when you switch to another file unless you explicitly pin them. // This is useful for quickly viewing files without cluttering your workspace. "enabled": true, // Whether to open tabs in preview mode when selected from the file finder. "enable_preview_from_file_finder": false, // Whether a preview tab gets replaced when code navigation is used to navigate away from the tab. "enable_preview_from_code_navigation": false }, // Settings related to the file finder. "file_finder": { // Whether to show file icons in the file finder. "file_icons": true, // Determines how much space the file finder can take up in relation to the available window width. // There are 5 possible width values: // // 1. Small: This value is essentially a fixed width. // "modal_max_width": "small" // 2. Medium: // "modal_max_width": "medium" // 3. Large: // "modal_max_width": "large" // 4. Extra Large: // "modal_max_width": "xlarge" // 5. Fullscreen: This value removes any horizontal padding, as it consumes the whole viewport width. // "modal_max_width": "full" // // Default: small "modal_max_width": "small", // Determines whether the file finder should skip focus for the active file in search results. // There are 2 possible values: // // 1. true: When searching for files, if the currently active file appears as the first result, // auto-focus will skip it and focus the second result instead. // "skip_focus_for_active_in_search": true // // 2. false: When searching for files, the first result will always receive focus, // even if it's the currently active file. // "skip_focus_for_active_in_search": false // // Default: true "skip_focus_for_active_in_search": true }, // Whether or not to remove any trailing whitespace from lines of a buffer // before saving it. "remove_trailing_whitespace_on_save": true, // Whether to start a new line with a comment when a previous line is a comment as well. "extend_comment_on_newline": true, // Removes any lines containing only whitespace at the end of the file and // ensures just one newline at the end. "ensure_final_newline_on_save": true, // Whether or not to perform a buffer format before saving // // Keep in mind, if the autosave with delay is enabled, format_on_save will be ignored "format_on_save": "on", // How to perform a buffer format. This setting can take 4 values: // // 1. Format code using the current language server: // "formatter": "language_server" // 2. Format code using an external command: // "formatter": { // "external": { // "command": "prettier", // "arguments": ["--stdin-filepath", "{buffer_path}"] // } // } // 3. Format code using Zed's Prettier integration: // "formatter": "prettier" // 4. Default. Format files using Zed's Prettier integration (if applicable), // or falling back to formatting via language server: // "formatter": "auto" "formatter": "auto", // How to soft-wrap long lines of text. // Possible values: // // 1. Prefer a single line generally, unless an overly long line is encountered. // "soft_wrap": "none", // "soft_wrap": "prefer_line", // (deprecated, same as "none") // 2. Soft wrap lines that overflow the editor. // "soft_wrap": "editor_width", // 3. Soft wrap lines at the preferred line length. // "soft_wrap": "preferred_line_length", // 4. Soft wrap lines at the preferred line length or the editor width (whichever is smaller). // "soft_wrap": "bounded", "soft_wrap": "none", // The column at which to soft-wrap lines, for buffers where soft-wrap // is enabled. "preferred_line_length": 80, // Whether to indent lines using tab characters, as opposed to multiple // spaces. "hard_tabs": false, // How many columns a tab should occupy. "tab_size": 4, // What debuggers are preferred by default for all languages. "debuggers": [], // Control what info is collected by Zed. "telemetry": { // Send debug info like crash reports. "diagnostics": true, // Send anonymized usage data like what languages you're using Zed with. "metrics": true }, // Automatically update Zed. This setting may be ignored on Linux if // installed through a package manager. "auto_update": true, // Diagnostics configuration. "diagnostics": { // Whether to show the project diagnostics button in the status bar. "button": true, // Whether to show warnings or not by default. "include_warnings": true, // Settings for inline diagnostics "inline": { // Whether to show diagnostics inline or not "enabled": false, // The delay in milliseconds to show inline diagnostics after the // last diagnostic update. "update_debounce_ms": 150, // The amount of padding between the end of the source line and the start // of the inline diagnostic in units of em widths. "padding": 4, // The minimum column to display inline diagnostics. This setting can be // used to horizontally align inline diagnostics at some column. Lines // longer than this value will still push diagnostics further to the right. "min_column": 0, // The minimum severity of the diagnostics to show inline. // Inherits editor's diagnostics' max severity settings when `null`. "max_severity": null }, "cargo": { // When enabled, Zed disables rust-analyzer's check on save and starts to query // Cargo diagnostics separately. "fetch_cargo_diagnostics": false } }, // Files or globs of files that will be excluded by Zed entirely. They will be skipped during file // scans, file searches, and not be displayed in the project file tree. Takes precedence over `file_scan_inclusions`. "file_scan_exclusions": [ "**/.git", "**/.svn", "**/.hg", "**/.jj", "**/CVS", "**/.DS_Store", "**/Thumbs.db", "**/.classpath", "**/.settings" ], // Files or globs of files that will be included by Zed, even when ignored by git. This is useful // for files that are not tracked by git, but are still important to your project. Note that globs // that are overly broad can slow down Zed's file scanning. `file_scan_exclusions` takes // precedence over these inclusions. "file_scan_inclusions": [".env*"], // Git gutter behavior configuration. "git": { // Control whether the git gutter is shown. May take 2 values: // 1. Show the gutter // "git_gutter": "tracked_files" // 2. Hide the gutter // "git_gutter": "hide" "git_gutter": "tracked_files", // Control whether the git blame information is shown inline, // in the currently focused line. "inline_blame": { "enabled": true // Sets a delay after which the inline blame information is shown. // Delay is restarted with every cursor movement. // "delay_ms": 600 // // Whether or not to display the git commit summary on the same line. // "show_commit_summary": false // // The minimum column number to show the inline blame information at // "min_column": 0 }, // How git hunks are displayed visually in the editor. // This setting can take two values: // // 1. Show unstaged hunks filled and staged hunks hollow: // "hunk_style": "staged_hollow" // 2. Show unstaged hunks hollow and staged hunks filled: // "hunk_style": "unstaged_hollow" "hunk_style": "staged_hollow" }, // The list of custom Git hosting providers. "git_hosting_providers": [ // { // "provider": "github", // "name": "BigCorp GitHub", // "base_url": "https://code.big-corp.com" // } ], // Configuration for how direnv configuration should be loaded. May take 2 values: // 1. Load direnv configuration using `direnv export json` directly. // "load_direnv": "direct" // 2. Load direnv configuration through the shell hook, works for POSIX shells and fish. // "load_direnv": "shell_hook" "load_direnv": "direct", "edit_predictions": { // A list of globs representing files that edit predictions should be disabled for. // There's a sensible default list of globs already included. // Any addition to this list will be merged with the default list. // Globs are matched relative to the worktree root, // except when starting with a slash (/) or equivalent in Windows. "disabled_globs": ["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"], // When to show edit predictions previews in buffer. // This setting takes two possible values: // 1. Display predictions inline when there are no language server completions available. // "mode": "eager" // 2. Display predictions inline only when holding a modifier key (alt by default). // "mode": "subtle" "mode": "eager", // Whether edit predictions are enabled when editing text threads. // This setting has no effect if globally disabled. "enabled_in_text_threads": true }, // Settings specific to journaling "journal": { // The path of the directory where journal entries are stored "path": "~", // What format to display the hours in // May take 2 values: // 1. hour12 // 2. hour24 "hour_format": "hour12" }, // Settings specific to the terminal "terminal": { // What shell to use when opening a terminal. May take 3 values: // 1. Use the system's default terminal configuration in /etc/passwd // "shell": "system" // 2. A program: // "shell": { // "program": "sh" // } // 3. A program with arguments: // "shell": { // "with_arguments": { // "program": "/bin/bash", // "args": ["--login"] // } // } "shell": "system", // Where to dock terminals panel. Can be `left`, `right`, `bottom`. "dock": "bottom", // Default width when the terminal is docked to the left or right. "default_width": 640, // Default height when the terminal is docked to the bottom. "default_height": 320, // What working directory to use when launching the terminal. // May take 4 values: // 1. Use the current file's project directory. Will Fallback to the // first project directory strategy if unsuccessful // "working_directory": "current_project_directory" // 2. Use the first project in this workspace's directory // "working_directory": "first_project_directory" // 3. Always use this platform's home directory (if we can find it) // "working_directory": "always_home" // 4. Always use a specific directory. This value will be shell expanded. // If this path is not a valid directory the terminal will default to // this platform's home directory (if we can find it) // "working_directory": { // "always": { // "directory": "~/zed/projects/" // } // } "working_directory": "current_project_directory", // Set the cursor blinking behavior in the terminal. // May take 3 values: // 1. Never blink the cursor, ignoring the terminal mode // "blinking": "off", // 2. Default the cursor blink to off, but allow the terminal to // set blinking // "blinking": "terminal_controlled", // 3. Always blink the cursor, ignoring the terminal mode // "blinking": "on", "blinking": "terminal_controlled", // Default cursor shape for the terminal. // 1. A block that surrounds the following character // "block" // 2. A vertical bar // "bar" // 3. An underline / underscore that runs along the following character // "underline" // 4. A box drawn around the following character // "hollow" // // Default: not set, defaults to "block" "cursor_shape": null, // Set whether Alternate Scroll mode (code: ?1007) is active by default. // Alternate Scroll mode converts mouse scroll events into up / down key // presses when in the alternate screen (e.g. when running applications // like vim or less). The terminal can still set and unset this mode. // May take 2 values: // 1. Default alternate scroll mode to on // "alternate_scroll": "on", // 2. Default alternate scroll mode to off // "alternate_scroll": "off", "alternate_scroll": "on", // Set whether the option key behaves as the meta key. // May take 2 values: // 1. Rely on default platform handling of option key, on macOS // this means generating certain unicode characters // "option_as_meta": false, // 2. Make the option keys behave as a 'meta' key, e.g. for emacs // "option_as_meta": true, "option_as_meta": false, // Whether or not selecting text in the terminal will automatically // copy to the system clipboard. "copy_on_select": false, // Whether to show the terminal button in the status bar "button": true, // Any key-value pairs added to this list will be added to the terminal's // environment. Use `:` to separate multiple values. "env": { // "KEY": "value1:value2" }, // Set the terminal's line height. // May take 3 values: // 1. Use a line height that's comfortable for reading, 1.618 // "line_height": "comfortable" // 2. Use a standard line height, 1.3. This option is useful for TUIs, // particularly if they use box characters // "line_height": "standard", // 3. Use a custom line height. // "line_height": { // "custom": 2 // }, "line_height": "comfortable", // Activate the python virtual environment, if one is found, in the // terminal's working directory (as resolved by the working_directory // setting). Set this to "off" to disable this behavior. "detect_venv": { "on": { // Default directories to search for virtual environments, relative // to the current working directory. We recommend overriding this // in your project's settings, rather than globally. "directories": [".env", "env", ".venv", "venv"], // Can also be `csh`, `fish`, `nushell` and `power_shell` "activate_script": "default" } }, "toolbar": { // Whether to display the terminal title in its toolbar's breadcrumbs. // Only shown if the terminal title is not empty. // // The shell running in the terminal needs to be configured to emit the title. // Example: `echo -e "\e]2;New Title\007";` "breadcrumbs": true }, // Scrollbar-related settings "scrollbar": { // When to show the scrollbar in the terminal. // This setting can take five values: // // 1. null (default): Inherit editor settings // 2. Show the scrollbar if there's important information or // follow the system's configured behavior (default): // "auto" // 3. Match the system's configured behavior: // "system" // 4. Always show the scrollbar: // "always" // 5. Never show the scrollbar: // "never" "show": null } // Set the terminal's font size. If this option is not included, // the terminal will default to matching the buffer's font size. // "font_size": 15, // Set the terminal's font family. If this option is not included, // the terminal will default to matching the buffer's font family. // "font_family": "Zed Plex Mono", // Set the terminal's font fallbacks. If this option is not included, // the terminal will default to matching the buffer's font fallbacks. // This will be merged with the platform's default font fallbacks // "font_fallbacks": ["FiraCode Nerd Fonts"], // Sets the maximum number of lines in the terminal's scrollback buffer. // Default: 10_000, maximum: 100_000 (all bigger values set will be treated as 100_000), 0 disables the scrolling. // Existing terminals will not pick up this change until they are recreated. // "max_scroll_history_lines": 10000, }, "code_actions_on_format": {}, // Settings related to running tasks. "tasks": { "variables": {}, "enabled": true }, // An object whose keys are language names, and whose values // are arrays of filenames or extensions of files that should // use those languages. // // For example, to treat files like `foo.notjs` as JavaScript, // and `Embargo.lock` as TOML: // // { // "JavaScript": ["notjs"], // "TOML": ["Embargo.lock"] // } // "file_types": { "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"], "Shell Script": [".env.*"] }, // Settings for which version of Node.js and NPM to use when installing // language servers and Copilot. // // Note: changing this setting currently requires restarting Zed. "node": { // By default, Zed will look for `node` and `npm` on your `$PATH`, and use the // existing executables if their version is recent enough. Set this to `true` // to prevent this, and force Zed to always download and install its own // version of Node. "ignore_system_version": false, // You can also specify alternative paths to Node and NPM. If you specify // `path`, but not `npm_path`, Zed will assume that `npm` is located at // `${path}/../npm`. "path": null, "npm_path": null }, // The extensions that Zed should automatically install on startup. // // If you don't want any of these extensions, add this field to your settings // and change the value to `false`. "auto_install_extensions": { "html": true }, // Controls how completions are processed for this language. "completions": { // Controls how words are completed. // For large documents, not all words may be fetched for completion. // // May take 3 values: // 1. "enabled" // Always fetch document's words for completions along with LSP completions. // 2. "fallback" // Only if LSP response errors or times out, use document's words to show completions. // 3. "disabled" // Never fetch or complete document's words for completions. // (Word-based completions can still be queried via a separate action) // // Default: fallback "words": "fallback", // Whether to fetch LSP completions or not. // // Default: true "lsp": true, // When fetching LSP completions, determines how long to wait for a response of a particular server. // When set to 0, waits indefinitely. // // Default: 0 "lsp_fetch_timeout_ms": 0, // Controls what range to replace when accepting LSP completions. // // When LSP servers give an `InsertReplaceEdit` completion, they provides two ranges: `insert` and `replace`. Usually, `insert` // contains the word prefix before your cursor and `replace` contains the whole word. // // Effectively, this setting just changes whether Zed will use the received range for `insert` or `replace`, so the results may // differ depending on the underlying LSP server. // // Possible values: // 1. "insert" // Replaces text before the cursor, using the `insert` range described in the LSP specification. // 2. "replace" // Replaces text before and after the cursor, using the `replace` range described in the LSP specification. // 3. "replace_subsequence" // Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, // and like `"insert"` otherwise. // 4. "replace_suffix" // Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like // `"insert"` otherwise. "lsp_insert_mode": "replace_suffix" }, // Different settings for specific languages. "languages": { "Astro": { "language_servers": ["astro-language-server", "..."], "prettier": { "allowed": true, "plugins": ["prettier-plugin-astro"] } }, "Blade": { "prettier": { "allowed": true } }, "C": { "format_on_save": "off", "use_on_type_format": false, "prettier": { "allowed": false } }, "C++": { "format_on_save": "off", "use_on_type_format": false, "prettier": { "allowed": false } }, "CSS": { "prettier": { "allowed": true } }, "Dart": { "tab_size": 2 }, "Diff": { "show_edit_predictions": false, "remove_trailing_whitespace_on_save": false, "ensure_final_newline_on_save": false }, "Elixir": { "language_servers": ["elixir-ls", "!next-ls", "!lexical", "..."] }, "Elm": { "tab_size": 4 }, "Erlang": { "language_servers": ["erlang-ls", "!elp", "..."] }, "Git Commit": { "allow_rewrap": "anywhere" }, "Go": { "code_actions_on_format": { "source.organizeImports": true } }, "GraphQL": { "prettier": { "allowed": true } }, "HEEX": { "language_servers": ["elixir-ls", "!next-ls", "!lexical", "..."] }, "HTML": { "prettier": { "allowed": true } }, "Java": { "prettier": { "allowed": true, "plugins": ["prettier-plugin-java"] } }, "JavaScript": { "language_servers": ["!typescript-language-server", "vtsls", "..."], "prettier": { "allowed": true } }, "JSON": { "prettier": { "allowed": true } }, "JSONC": { "prettier": { "allowed": true } }, "LaTeX": { "format_on_save": "on", "formatter": "language_server", "language_servers": ["texlab", "..."], "prettier": { "allowed": false } }, "Markdown": { "format_on_save": "off", "use_on_type_format": false, "allow_rewrap": "anywhere", "soft_wrap": "editor_width", "prettier": { "allowed": true } }, "PHP": { "language_servers": ["phpactor", "!intelephense", "..."], "prettier": { "allowed": true, "plugins": ["@prettier/plugin-php"], "parser": "php" } }, "Plain Text": { "allow_rewrap": "anywhere" }, "Ruby": { "language_servers": ["solargraph", "!ruby-lsp", "!rubocop", "..."] }, "SCSS": { "prettier": { "allowed": true } }, "SQL": { "prettier": { "allowed": true, "plugins": ["prettier-plugin-sql"] } }, "Starlark": { "language_servers": ["starpls", "!buck2-lsp", "..."] }, "Svelte": { "language_servers": ["svelte-language-server", "..."], "prettier": { "allowed": true, "plugins": ["prettier-plugin-svelte"] } }, "TSX": { "language_servers": ["!typescript-language-server", "vtsls", "..."], "prettier": { "allowed": true } }, "Twig": { "prettier": { "allowed": true } }, "TypeScript": { "language_servers": ["!typescript-language-server", "vtsls", "..."], "prettier": { "allowed": true } }, "Vue.js": { "language_servers": ["vue-language-server", "..."], "prettier": { "allowed": true } }, "XML": { "prettier": { "allowed": true, "plugins": ["@prettier/plugin-xml"] } }, "YAML": { "prettier": { "allowed": true } }, "Zig": { "language_servers": ["zls", "..."] } }, // Different settings for specific language models. "language_models": { "anthropic": { "version": "1", "api_url": "https://api.anthropic.com" }, "google": { "api_url": "https://generativelanguage.googleapis.com" }, "ollama": { "api_url": "http://localhost:11434" }, "openai": { "version": "1", "api_url": "https://api.openai.com/v1" }, "lmstudio": { "api_url": "http://localhost:1234/api/v0" }, "deepseek": { "api_url": "https://api.deepseek.com" }, "mistral": { "api_url": "https://api.mistral.ai/v1" } }, // Zed's Prettier integration settings. // Allows to enable/disable formatting with Prettier // and configure default Prettier, used when no project-level Prettier installation is found. "prettier": { // // Whether to consider prettier formatter or not when attempting to format a file. // "allowed": false, // // // Use regular Prettier json configuration. // // If Prettier is allowed, Zed will use this for its Prettier instance for any applicable file, if // // the project has no other Prettier installed. // "plugins": [], // // // Use regular Prettier json configuration. // // If Prettier is allowed, Zed will use this for its Prettier instance for any applicable file, if // // the project has no other Prettier installed. // "trailingComma": "es5", // "tabWidth": 4, // "semi": false, // "singleQuote": true }, // Settings for auto-closing of JSX tags. "jsx_tag_auto_close": { "enabled": true }, // LSP Specific settings. "lsp": { // Specify the LSP name as a key here. // "rust-analyzer": { // // A special flag for rust-analyzer integration, to use server-provided tasks // enable_lsp_tasks": true, // // These initialization options are merged into Zed's defaults // "initialization_options": { // "check": { // "command": "clippy" // rust-analyzer.check.command (default: "check") // } // } // } }, // Jupyter settings "jupyter": { "enabled": true // Specify the language name as the key and the kernel name as the value. // "kernel_selections": { // "python": "conda-base" // "typescript": "deno" // } }, // Vim settings "vim": { "default_mode": "normal", "toggle_relative_line_numbers": false, "use_system_clipboard": "always", "use_multiline_find": false, "use_smartcase_find": false, "highlight_on_yank_duration": 200, "custom_digraphs": {}, // Cursor shape for the each mode. // Specify the mode as the key and the shape as the value. // The mode can be one of the following: "normal", "replace", "insert", "visual". // The shape can be one of the following: "block", "bar", "underline", "hollow". "cursor_shape": {} }, // The server to connect to. If the environment variable // ZED_SERVER_URL is set, it will override this setting. "server_url": "https://zed.dev", // Settings overrides to use when using Zed Preview. // Mostly useful for developers who are managing multiple instances of Zed. "preview": { // "theme": "Andromeda" }, // Settings overrides to use when using Zed Nightly. // Mostly useful for developers who are managing multiple instances of Zed. "nightly": { // "theme": "Andromeda" }, // Settings overrides to use when using Zed Stable. // Mostly useful for developers who are managing multiple instances of Zed. "stable": { // "theme": "Andromeda" }, // Settings overrides to use when using Zed Dev. // Mostly useful for developers who are managing multiple instances of Zed. "dev": { // "theme": "Andromeda" }, // Whether to show full labels in line indicator or short ones // // Values: // - `short`: "2 s, 15 l, 32 c" // - `long`: "2 selections, 15 lines, 32 characters" // Default: long "line_indicator_format": "long", // Set a proxy to use. The proxy protocol is specified by the URI scheme. // // Supported URI scheme: `http`, `https`, `socks4`, `socks4a`, `socks5`, // `socks5h`. `http` will be used when no scheme is specified. // // By default no proxy will be used, or Zed will try get proxy settings from // environment variables. // // Examples: // - "proxy": "socks5h://localhost:10808" // - "proxy": "http://127.0.0.1:10809" "proxy": null, // Set to configure aliases for the command palette. // When typing a query which is a key of this object, the value will be used instead. // // Examples: // { // "W": "workspace::Save" // } "command_aliases": {}, // ssh_connections is an array of ssh connections. // You can configure these from `project: Open Remote` in the command palette. // Zed's ssh support will pull configuration from your ~/.ssh too. // Examples: // [ // { // "host": "example-box", // // "port": 22, "username": "test", "args": ["-i", "/home/user/.ssh/id_rsa"] // "projects": [ // { // "paths": ["/home/user/code/zed"] // } // ] // } // ] "ssh_connections": [], // Configures context servers for use by the agent. "context_servers": {}, "debugger": { "stepping_granularity": "line", "save_breakpoints": true, "button": true } }

参考文章

Zed 官方文档


目录
介绍
如何使用
MacOS
Linux
配置文件示例
这是配置完成后的编辑器 UI
详细配置文档
1. 主题 (Theme)
2. 基础键位绑定 (Base Keymap)
3. 特性开关 (Features)
4. 编辑器字体 (Buffer Font)
5. UI 字体 (UI Font)
6. 代码与界面显示 (Code & Interface Display)
7. 应用行为 (Application Behavior)
8. 面板与工具栏 (Panels & Toolbars)
9. 编辑行为 (Editing Behavior)
10. 语言与服务 (Languages & Services)
11. Git
完整配置
参考文章