← 返回博客

隐藏的宝藏:团队版第一部分

曾几何时,我能记住 Zed 提供的所有功能。在那段时间里,帮助那些只是寻找设置调整的用户要简单得多。

如今,我一直在发现 Zed 的新角落;通过社区,通过队友,以及通过我在侧边栏的 blame 视图中偶然发现的提交信息。每个月有约 900 个拉取请求被合并,要跟上所有新功能和变更可能很难。

你可以阅读每个 Zednesday™️ 的发布说明,你可以搜索文档,但很有可能,你仍然会错过一些可能对你日常使用 Zed 产生重大影响的隐藏宝藏。

在本系列中,我们将介绍我们以及你们最喜欢的隐藏宝藏和工作流程,这样我们都可以更多地了解 Zed。

让我们进入今天的宝藏吧!🎉

通过键位绑定编辑让 Rust 更轻松

来自

Conrad Irwin

Conrad Irwin / 软件工程师

Vim 最好的地方之一就是你可以将一个键位绑定映射到另一个。等等,我说的是 Vim 吗?我指的是 Zed。

我有两个有趣的例子可以使 Rust 编程更容易

{
  "context": "vim_mode == visual",
  "bindings": {
    "\\ d": ["workspace::SendKeystrokes", "\" a s dbg!( ctrl-r a ) escape"]
  }
},
{
  "context": "vim_mode == normal",
  "bindings": {
    "\\ d": ["workspace::SendKeystrokes", "v a a \" a y g v [ x [ x \" a p"],
  }
}

如果我选择一个表达式,\d 将它用 dbg! 包裹起来。如果我把光标放在 dbg!(...) 的中间,\d 将把它删除。

用键盘重复运行测试

来自

Cole Miller

Cole Miller / 软件工程师

在迭代测试时,使用 editor: spawn nearest task 动作是从 Zed 重复运行测试最方便的键盘驱动方式。

右键菜单宝藏

来自

Kirill Bulatov

Kirill Bulatov / 软件工程师

某些功能通过右键菜单以半隐形模式启动:通常,为特定功能添加一个新点比构建一个全新的用户界面更简单。

以下是我最喜欢的几个

复制并修剪

当我选择、复制文本并想将其插入到某个位置时,我非常喜欢使用 Copy and Trim 功能

Zed's editor context menu
Zed 的编辑器右键菜单

常规的 Copy 只会复制所选内容,导致

"diagnostics": {
    "inline": {
      "enabled": true
    }
  },

  "diagnostics": {
    "inline": {
      "enabled": true
    }
  },

之后的插入。

Copy and Trim 产生更方便的插入

"diagnostics": {
  "inline": {
    "enabled": true
  }
},

文件比较

在项目面板中,有一种方法可以选择多个条目,其中最近选择的两个可以使用 Compare marked files 进行比较

Zed's project panel context menu
Zed 的项目面板右键菜单

设置专注于散文写作

来自

Danilo Leal

Danilo Leal / 设计师

我经常在 Zed 中写长篇散文,无论是为我的个人博客还是在 Zed 的频道笔记中(我们在那里计划和制定工作策略)。

这样做时,我更喜欢以一种帮助我专注于写作本身的方式整理我的工作区。有一套非常棒的动作可以用来实现这一点。

这是我的分步方法

  1. 使用 workspace: close all docks 关闭所有打开的面板/停靠栏(你也可以通过每个面板的单独键位绑定来完成)
  2. 使用 workspace: close inactive tabs and panes 清理你的工作区
  3. 关键:使用 workspace: toggle centered layout 动作使你唯一的窗格/标签在 Zed 的 UI 中居中

瞧!这让写作感觉更舒适、更专注、更紧凑(以一种好的方式)。没有任何其他东西可以分散我的注意力,让我专注于我需要写的东西!

选择所有正则表达式匹配项

来自

Joseph Lyons

约瑟夫·莱昂斯 (Joseph Lyons) / 社区

你可能已经知道 Zed 有一个内置的 editor: select all matches 动作,它会根据你当前选择的内容创建多个选择,并允许你同时编辑所有匹配项。这本身就很有用,适用于你想匹配一种文本形式的简单情况,但 Zed 有一个更强大的版本

  1. 运行 buffer search: deploy
  2. 启用正则表达式搜索过滤器并输入你的模式
  3. 不是像通常在缓冲区搜索中那样按 enter 键来前进匹配项,而是按 alt-enter,所有匹配的项都将被选中。如果你喜欢使用鼠标,缓冲区搜索栏中也有一个专用的 select all matches 按钮!

总的来说,你可以为你能想到的任何缓冲区搜索在此缓冲区中创建多个选择。

每行一个光标

来自

Marshall Bowers

Marshall Bowers / 软件工程师

我是 Zed 中多光标的重度用户,经常需要每行一个光标,这样我就可以一次性处理大量文本。

实现这一点的快速方法是使用 editor: split selection into lines 动作。我将选择缓冲区的全部内容,将选择拆分成行,然后随心所欲地使用多光标进行编辑。

焦点改变时自动保存

来自

Conrad Irwin

Conrad Irwin / 软件工程师

作为用户,我希望确保我的文件永远不会被保存,所以当我运行测试时,它们再次失败,因为它们没有我的最新更改……

从来没有人说过。

{ "autosave": "on_focus_change" }

现在,每当我从编辑器切换到终端时,文件都会被保存。我的测试运行的是我刚刚编写的代码的相同版本,世界上所有错误都得到了纠正。

在纲要模态中使用空格

来自

Nathan Sobo

Nathan Sobo / 首席执行官兼联合创始人

你可能知道 Zed 的大纲模态,用于快速符号化地检查和导航缓冲区。你可以在 macOS 上使用 cmd-shift-O (outline: toggle) 部署它。

默认情况下,顶部的搜索栏只按符号的名称进行过滤。但是,如果你在搜索查询中包含空格,Zed 会将搜索范围扩展到同时匹配符号的名称及其上下文关键字(如可见性修饰符和声明类型)。

这允许你构建如下查询

  • pub fn 以导航 Rust 文件中的所有公共函数
  • trait (带尾随空格)以导航所有 trait 定义
  • impl Foo for 以查找 Foo trait 的实现
Filtering all public functions in a buffer via the outline panel
通过大纲面板过滤缓冲区中的所有公共函数

在新窗格中打开文件

来自

Joseph Lyons

约瑟夫·莱昂斯 (Joseph Lyons) / 社区

Zed 中有多种文件导航方式,其中包括:

  • 通过项目面板打开文件 (project panel: toggle focus)
  • 通过文件查找器打开文件 (file finder: toggle)
  • 在点击符号时按住 cmd (macOS) 或 ctrl (Linux/Windows) 跳转到符号定义 (editor: go to definition)

默认情况下,这些操作在新文件中打开在当前窗格中;你的当前文件不再可见。

如果你从项目面板或文件查找器打开文件时按住 cmd (macOS) 或 ctrl (Linux/Windows),或者在跳转到定义时除了 cmd/ctrl 之外还按住 alt,新文件将在右侧的新窗格中打开,同时保留你之前的文件在视图中。

将 Lazygit 作为任务

来自

Matt Miller

Matt Miller / 设计师

这个技巧来自 Reddit 上的 /u/parawaa,它很好地展示了 Zed 在使用任务时的灵活性。

这会在缓冲区中生成 Lazygit,在更大的窗格中提供一个终端 GUI。

如果你还没有安装 Lazygit

brew install lazygit

接下来,打开 ~/.config/zed/tasks.json。你可以通过命令面板中的 zed: open tasks 快速找到它 (Cmd Shift + P)。

将此内容放入文件中的某个位置,即可开始使用。

{
  "label": "LazyGit",
  "command": "lazygit",
  "shell": {
    "program": "sh"
  },
  "hide": "on_success",
  "reveal_target": "center",
  "show_summary": false,
  "show_command": false,
  "allow_concurrent_runs": true,
  "use_new_terminal": true
}

正如 /u/parawaa 也展示的,你甚至可以将任务映射到键盘快捷键。

我已覆盖默认的 Cmd Shift + G 行为来运行任务。

"cmd-shift-g": [
  "task::Spawn",
    { "task_name": "LazyGit", "reveal_target": "center" }
]

你将获得一个漂亮的终端 GUI 在一个更大的窗格中。

Lazygit window pane
Lazygit 窗口窗格

分享你的隐藏宝藏

告诉我们你觉得这些宝藏中哪个最有用,请分享你的宝藏,这样我们就可以采纳你在日常工作中发现的关键技巧!


正在寻找更好的编辑器吗?

您今天就可以在 macOS、Windows 或 Linux 上试用 Zed。立即下载


我们正在招聘!

如果您对我们博客中涵盖的主题充满热情,请考虑加入我们的团队,帮助我们实现软件开发的未来。