乐于分享
好东西不私藏

我的 Zed 编辑器配置分享:打造现代化的高效开发环境

我的 Zed 编辑器配置分享:打造现代化的高效开发环境

Zed 是一款用 Rust 编写的下一代代码编辑器,以极致性能著称。本文分享我的个人配置,包括主题、字体、快捷键等,快捷键部分参考了

JetBrains、Emacs、Neovim 的设计习惯,希望对有同样背景的开发者有所帮助。

文末有完整的 settings.json和 keymap.json


一、外观与字体

"theme""Ayu Mirage",
"icon_theme""Catppuccin Macchiato",                                                                                            "buffer_font_family""Maple Mono NF CN",
"buffer_font_size"18.0,                                                                                                        "ui_font_size"18.0,
"buffer_line_height""comfortable",
  • 主题:Ayu Mirage,深色系,护眼舒适 – 图标主题:Catppuccin Macchiato
  • 字体:Maple Mono NF CN,一款支持中文的等宽编程字体
  • 字体大小:编辑区和 UI 统一设为 18,大屏幕舒适阅读

二、编辑器行为

"vim_mode"true,
"relative_line_numbers""enabled",
"colorize_brackets"true,
"use_auto_surround"true,
"format_on_save""off",
"tab_size"4,
"hard_tabs"false,
"scroll_beyond_last_line""one_page",
"current_line_highlight""line",
"show_whitespaces""selection",
  • 开启 Vim 模式
  • 相对行号:跳转行数一目了然,必须配合 Vim 操作才好用
  • 括号着色:层级一眼看清,减少括号匹配错误
  • 自动包围:选中文字后输入括号/引号,自动包裹
  • 全局关闭保存时格式化,但对 Rust / TypeScript / JavaScript / Zig 单独开启

三、语言专项配置

"languages": {
"Rust": { "format_on_save""on" },
"TypeScript": { "format_on_save""on" },
"JavaScript": { "format_on_save""on" },
"YAML": { "tab_size"2 },
"TOML": { "tab_size"2 },
"Zig": {
"formatter""language_server",
"format_on_save""on",
"language_servers": ["zls""..."]
}
}
  • Rust / TS / JS 保存即格式化,减少手动操作
  • YAML / TOML 缩进改为 2 空格,符合社区惯例
  • Zig 使用 ZLS 作为主要 Language Server

四、AI 助手配置

"agent": {
"default_model": {
"provider""google",
"model""gemini-3-flash-preview"
},
"inline_assistant_model": {
"provider""copilot_chat",
"model""claude-haiku-4.5"
},
"default_profile""write"
}
  • 默认对话模型:Google Gemini 3 Flash,速度快、免费额度充足
  • 内联 AI 助手:使用 Claude Haiku,轻量快速,适合代码补全和小改动

五、快捷键设计思路:JetBrains 风格

我习惯使用 Emacs 作为基础键位(”base_keymap”: “Emacs”),行移动上仿照了 JetBrains IDE 的操作逻辑,通过 Space Leader 键 实现

Neovim 风格的空间键映射。

5.1 光标移动(Emacs 风格)

快捷键
功能
Ctrl-h
向左移动
Ctrl-l
向右移动
Ctrl-k
向上移动
Ctrl-j
向下移动
Ctrl-e

(插入模式)
移到行尾
Ctrl-a

(插入模式)
移到行首

这组映射在插入模式下无需离开主键区,手指不离 home row。

5.2 Vim Normal 模式行首/行尾

H → 移到行首(含缩进感知) L → 移到行尾

类似 JetBrains 中 Home / End 的智能行首行尾行为。

5.3 代码操作(Space 前缀)

快捷键
功能
对应 JetBrains
Space d
跳转到定义
Ctrl+B
Space g d
跳转到定义
Ctrl+B
Space g i
跳转到实现
Ctrl+Alt+B
Space g y
跳转到类型定义
Ctrl+Shift+B
Space k
显示文档悬浮窗
Ctrl+Q
Space c a
代码修复建议
Alt+Enter
Space c r
重命名变量
Shift+F6
F8
跳转到下一个诊断
F2
Shift-F8
跳转到上一个诊断
Shift+F2

5.4 文件与窗口操作

快捷键
功能
对应 JetBrains
Space f
文件搜索
Ctrl+Shift+N

/ Double Shift
Space /
全局文本搜索
Ctrl+Shift+F
Space p
切换项目
Recent Projects
Space e
切换左侧文件树
Alt+1
Space t
切换终端面板
Alt+F12
Space w
保存文件
Ctrl+S
Space q
关闭当前标签页
Ctrl+F4
Space v
垂直分屏
Ctrl+\

5.5 行操作(类 JetBrains)

快捷键
功能
对应 JetBrains
Alt-Shift-Up
上移当前行
Shift+Alt+Up
Alt-Shift-Down
下移当前行
Shift+Alt+Down
Alt-Up
扩展语法节点选择
Ctrl+W
Alt-Down
收缩语法节点选择
Ctrl+Shift+W

5.6 Git 快捷键

快捷键
功能
Cmd-Shift-Z
撤销文件改动(Git Restore)
Cmd-Y
Stage 当前 hunk 并跳到下一个
Cmd-Shift-Y
Unstage 当前 hunk 并跳到下一个
Cmd-Alt-Y
切换 Stage 状态

六、其他实用配置

"which_key": { "enabled"true }

开启 which-key 插件,按下 Space 后稍作停顿,会弹出所有可用快捷键提示,对于记不住键位的场景非常友好。

"minimap": {
"show""auto",
"thumb""always",
"thumb_border""left_open"
}

迷你地图开启,滚动条始终显示,方便大文件快速定位。


七、总结

功能
配置选择
编辑模式
Vim + Emacs 键位混合
快捷键风格
JetBrains / Neovim Leader Key
主题
Ayu Mirage
字体
Maple Mono NF CN
AI 助手
Gemini 3 Flash + Claude Haiku
主要语言
Rust / TypeScript / Zig

Zed 的性能优势配合合理的键位设计,可以让日常开发效率媲美甚至超越 JetBrains 系列 IDE。如果你也是从 IDEA / CLion / WebStorm

迁移过来的开发者,希望这份配置能给你一些参考。

完整配置

settings.json

{
"search": {
"include_ignored"false,
"case_sensitive"true,
"whole_word"true
 },
"restore_on_startup""last_workspace",
"icon_theme""Catppuccin Macchiato",
"git_panel": {
"tree_view"true,
"button"true// false 不显示 git 左侧按钮
"sort_by_path"true
 },
"collaboration_panel": {
"button"false
 },
"base_keymap""Emacs",
"theme""Ayu Mirage",
"agent": {
"inline_assistant_model": {
"provider""copilot_chat",
"model""claude-haiku-4.5"
  },
"default_profile""ask",
"default_model": {
"provider""google",
"model""gemini-3-flash-preview"
  }
 },
"preview_tabs": {
"enabled"true,
"enable_preview_from_file_finder"false
 },
"ui_font_size"18.0// 调整界面字体大小
"buffer_font_size"18.0// 调整编辑区字体大小
"buffer_font_family""Maple Mono NF CN"// 更改编辑区字体
"buffer_line_height""comfortable",
"buffer_font_weight"400.0,
"vim_mode"true,
"which_key": {
"enabled"true
 },
"terminal": {
"font_size"14// 集成终端的字体大小
"line_height""comfortable"// 终端行高
"copy_on_select"false// 在终端中选择文本时不要复制
"dock"null
 },
"use_auto_surround"true,
"colorize_brackets"true,
"tab_size"4// 缩进的空格数
"hard_tabs"false// 使用空格而非制表符进行缩进
"format_on_save""off"// 是否在保存时自动格式化代码
"show_whitespaces""selection"// 仅在选定文本时显示空白字符,也可以设置为 "none", "all", "trailing"
"preferred_line_length"100// 软换行长度,达到此长度时 Zed 会尝试换行
"current_line_highlight""line"// 高亮显示当前行,"line" 或 "none"
"relative_line_numbers""enabled"// 显示相对行号
"extend_comment_on_newline"false// 当前一行是注释时,新行是否也以注释开头
"scrollbar": {
"show""auto"// 滚动条显示方式
 },
"scroll_beyond_last_line""one_page"// 编辑器不会滚动到最后一行之外
"scroll_sensitivity"0.4,
"fast_scroll_sensitivity"1,
"seed_search_query_from_cursor""selection",
"use_smartcase_search"true,
"status_bar": {
"active_language_button"true,
"cursor_position_button"true,
"line_endings_button"true
 },
"use_on_type_format"false,
// 标签页
"tabs": {
"close_position""right",
"file_icons"true,
"git_status"true,
"activate_on_close""left_neighbour",
"show_close_button""hover",
"show_diagnostics""all"
 },
"telemetry": {
"diagnostics"false// 禁用发送诊断数据
"metrics"false// 禁用发送使用指标
 },
// 迷你地图
"minimap": {
"show""auto",
"thumb""always",
"thumb_border""left_open",
"current_line_highlight"null
 },
"languages": {
"Rust": {
"document_symbols""on",
"format_on_save""on"// 对 Rust 语言在保存时自动格式化
  },
"TypeScript": {
"format_on_save""on"// 对 TypeScript 语言在保存时自动格式化
  },
"JavaScript": {
"format_on_save""on"// 对 JavaScript 语言在保存时自动格式化
  },
"YAML": {
"tab_size"2
  },
"TOML": {
"tab_size"2
  },
"Zig": {
// Formatting with ZLS matches `zig fmt`.
"formatter""language_server",
"format_on_save""on",
// Make sure that zls is the primary language server
"language_servers": ["zls""..."],
"code_actions_on_format": {
// Run code actions that currently supports adding and removing discards.
// "source.fixAll": true,
// Run code actions that sorts @import declarations.
// "source.organizeImports": true,
   }
  },
"Markdown": {
"tab_size"1
  }
 },
"project_panel": {
"dock""left"// 项目面板停靠在左侧
 },
"proxy""socks5://127.0.0.1:6153",
"lsp": {
"markdown-oxide": {
"enable_lsp_tasks"true
  },
"rust-analyzer": {
"initialization_options": {
"completion": {
"snippets": {
"custom": {
"Arc::new": {
"postfix""arc",
"body": ["Arc::new(${receiver})"],
"requires""std::sync::Arc",
"scope""expr"
       },
"Some": {
"postfix""some",
"body": ["Some(${receiver})"],
"scope""expr"
       },
"Ok": {
"postfix""ok",
"body": ["Ok(${receiver})"],
"scope""expr"
       },
"Rc::new": {
"postfix""rc",
"body": ["Rc::new(${receiver})"],
"requires""std::rc::Rc",
"scope""expr"
       },
"Box::pin": {
"postfix""boxpin",
"body": ["Box::pin(${receiver})"],
"requires""std::boxed::Box",
"scope""expr"
       },
"vec!": {
"postfix""vec",
"body": ["vec![${receiver}]"],
"description""vec![]",
"scope""expr"
       }
      }
     }
    }
   }
  }
 }
}

keymap.json

[
 {
"context""Workspace",
"bindings": {
// "shift shift": "file_finder::Toggle",
  }
 },
 {
"context""Editor",
"bindings": {
"ctrl-/""editor::Undo"// 撤销
"ctrl-l""editor::MoveRight"// 右移
"ctrl-h""editor::MoveLeft"// 左移
"ctrl-k""editor::MoveUp"// 上移
"ctrl-j""editor::MoveDown"// 下移
"shift-alt-f""editor::Format",
"cmd-\\""pane::SplitRight",
"cmd-alt-\\""pane::SplitDown",

"alt-shift-up""editor::MoveLineUp",
"alt-shift-down""editor::MoveLineDown",
"alt-up""editor::SelectLargerSyntaxNode"// Expand selection
"alt-down""editor::SelectSmallerSyntaxNode"// Shrink selection

// 跳转到错误
"f8": ["editor::GoToDiagnostic", { "severity": { "min""hint""max""error" } }],
"shift-f8": ["editor::GoToPreviousDiagnostic", { "severity": { "min""hint""max""error" } }]
  }
 },
 {
"context""vim_mode == normal",
"bindings": {
"H": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps"true"stop_at_indent"true }],
"L""editor::MoveToEndOfLine",
"ctrl-e"null,
"space"null,
"enter"null
  }
 },

 {
"context""Editor && vim_mode == normal && !VimWaiting && !menu",
"bindings": {
// --- 文件与导航 (类似 Neo-tree / Telescope) ---
"space d""editor::GoToDefinition",
"space e""workspace::ToggleLeftDock"// 类似 nvim-tree/neo-tree 侧边栏
"space f""file_finder::Toggle"// 类似 Telescope find_files
"space p""projects::OpenRecent"// 切换项目
// "space b": "pane::ActivatePrevItem", // 快速切回上一个标签页

// --- 搜索 (类似 Telescope live_grep) ---
"space /""pane::DeploySearch"// 全项目搜索文本
// "space s w": "editor::SearchSelectedText", // 搜索当前光标下的词

// --- LSP / 代码跳转 (模仿 g 开头的映射到 space) ---
"space c a""editor::ToggleCodeActions"// 代码修复建议 (Code Action)
"space c r""editor::Rename"// 重命名变量
"space g d""editor::GoToDefinition"// 跳转到定义
"space g i""editor::GoToImplementation"// 跳转到实现
"space g y""editor::GoToTypeDefinition"// 跳转到类型定义
"space k""editor::Hover"// 显示文档悬浮窗 (LSP Hover)
// "space d": "diagnostics::Deploy", // 显示项目所有的诊断错误

// --- 窗口与编辑器控制 ---
"space w""workspace::Save"// 快速保存
"space q""pane::CloseActiveItem"// 关闭当前标签页 (Buffer)
"space v""pane::SplitRight"// 垂直分屏
// "space h": "pane::SplitBottom", // 水平分屏

// --- 终端 / Task 控制 ---
"space t""terminal_panel::Toggle"// 切换底部终端
"space r""task::Spawn"// 弹出 Task 运行列表 (类似运行你截图中的 cargo)
  }
 },
 {
"context""EmptyPane || SharedScreen",
"bindings": {
"space f""file_finder::Toggle"// 在没有打开文件时也能用 space f
  }
 },

 {
"context""vim_mode == insert",
"bindings": {
"ctrl-e""editor::MoveToEndOfLine",
"ctrl-a": [
"editor::MoveToBeginningOfLine",
    { "stop_at_soft_wraps"true"stop_at_indent"true }
   ]
  }
 },
 {
"context""Pane",
"use_key_equivalents"true,
"bindings": {
"ctrl-0""pane::ActivateLastItem",
"cmd-alt-left""pane::GoBack",
"cmd-alt-right""pane::GoForward",
"cmd-shift-f""pane::DeploySearch",
"cmd-k u": ["pane::CloseCleanItems", { "close_pinned"false }],
"cmd-k w": ["pane::CloseAllItems", { "close_pinned"false }],
"cmd-k cmd-w""workspace::CloseAllItemsAndPanes"
  }
 },

 {
"context""Editor && !agent_diff && !AgentPanel",
"use_key_equivalents"true,
"bindings": {
// "cmd-alt-z": "git::Restore",
"cmd-shift-z""git::Restore",
"cmd-alt-y""git::ToggleStaged",
"cmd-y""git::StageAndNext",
"cmd-shift-y""git::UnstageAndNext"
  }
 }
]
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 我的 Zed 编辑器配置分享:打造现代化的高效开发环境

猜你喜欢

  • 暂无文章