#工作区分组

工作区分组让你能够将工作区嵌入侧边栏中可折叠的命名分组。每个分组都有一个隐式的锚点工作区、一个用于在分组内创建新工作区的可自定义 + 按钮,以及用于重命名、固定、取消分组和编辑配置的右键操作。

#核心概念

#锚点工作区

每个分组都恰好由一个称为锚点的工作区拥有。侧边栏中的分组标题栏就是锚点的呈现形式——锚点没有单独的行。点击标题名称区域会聚焦到锚点的面板;点击箭头则切换折叠状态。

创建分组时,锚点始终是全新的。它们永远不会从已有的工作区提升而来。锚点的工作目录:在对选中项进行分组时继承自第一个选中的工作区,在通过 CLI 创建而未指定 --cwd 时则继承自当前活动的工作区。

关闭锚点工作区会解散该分组:其余每个成员都会变成未分组的工作区并保留在标签页列表中。除了锚点本身,不会关闭其他任何内容。在此操作发生前,应用会显示一个带有“不再询问”开关的确认对话框。

#分组标识

一个分组拥有名称、图标(一个 SF Symbol,默认为 folder.fill)以及一个可选的自定义颜色。这些与锚点工作区自身的自定义设置相互独立。锚点的颜色和图标在创建时取自分组,但之后两者可以各自变化。

#固定

分组可以独立于单个工作区的固定状态进行固定。被固定的顶级行,无论是单个工作区还是分组,都会排在未固定的行之上。在每个层级内,分组和工作区会保持你拖动它们时形成的顺序。

侧边栏自上而下排列顶级行:

  1. 已固定的顶级行(工作区和分组)。
  2. 未固定的顶级行(工作区和分组)。

#创建分组

可以通过两种方式创建分组:键盘快捷键或工作区右键菜单。两者都会在所选项上方插入一个新的锚点工作区,并将所选工作区移入该分组。分组创建后,你可以从分组标题处管理它并向其中添加工作区(参见下方的“管理分组”)。

#通过键盘(⌘⇧G)

在侧边栏中选中两个或更多工作区,然后按 ⌘⇧G。一个全新的锚点工作区会插入在选中项的上方,所有选中的工作区都会成为它的子项。分组会被自动命名为 Group 1、Group 2,依此类推——你随时可以通过标题栏右键菜单重命名它。

⌘⇧G 与 React Grab 的默认快捷键冲突。分组处理程序只有在侧边栏中明确多选了至少两个工作区时才会占用该组合键,因此在单选以及浏览器或终端环境中 React Grab 仍会触发。如果你不希望两者共用一个按键,可在 设置 → 键盘 中重新绑定它。

单标签分组无法通过快捷键创建。请使用工作区右键菜单中的 New Group from Workspace 项来创建。

#通过工作区右键菜单

在侧边栏中右键单击任意工作区并选择 New Group from Workspace,或在选中多个工作区时选择 New Group from Selection。这与快捷键使用相同的自动命名行为。

#管理分组

分组创建后,可以通过其标题的右键菜单以及标题上的 + 按钮来管理分组并向其中添加工作区。这两者都不会创建新分组。

#通过分组标题栏右键菜单

右键单击现有分组标题,可使用 Rename Group…、Pin Group / Unpin Group、Edit Group Config…(会打开 ~/.config/cmux/cmux.json)、Open Workspace Groups Docs、Ungroup (Keep Workspaces) 以及 Delete Group (Close Workspaces)。Delete 是破坏性操作,会提示确认;取消分组会保留工作区,仅移除容器。

#通过分组标题栏上的 + 按钮

将鼠标悬停在分组标题上即可显示末尾的 + 按钮。单击它可在分组中以锚点工作目录创建一个新工作区。右键单击它可使用 New Workspace in Group、Edit Group Config… 以及 Open Workspace Groups Docs。

当活动工作区是某个分组的锚点或成员时,按 ⌘N 同样会在该分组内创建新工作区。默认放置方式为 After current(在当前之后):从普通分组成员触发时,新工作区会紧接在活动成员之后;从锚点或标题栏触发时,则会落在分组的顶部。

#CLI

所有分组操作都可以通过 cmux workspace-group 子命令编写脚本。带连字符的形式将率先推出;一旦更广泛的 cmux workspace 命令命名空间上线,cmux workspace group 将成为规范形式,而带连字符的形式将永久保留为别名。

#子命令

cmux workspace-group list [--json]
cmux workspace-group create --name "manaflow" [--cwd ~/projects/manaflow] [--from <id>,<id>]
cmux workspace-group ungroup <group-id>
cmux workspace-group delete  <group-id>
cmux workspace-group rename <group-id> --name "new name"
cmux workspace-group collapse <group-id>
cmux workspace-group expand <group-id>
cmux workspace-group pin <group-id>
cmux workspace-group unpin <group-id>
cmux workspace-group add --group <group-id> --workspace <workspace-id>
cmux workspace-group remove --workspace <workspace-id>
cmux workspace-group set-anchor --group <group-id> --workspace <workspace-id>
cmux workspace-group new-workspace <group-id> [--placement afterCurrent|top|end]
cmux workspace-group set-color <group-id> --hex "#7A4FD8"
cmux workspace-group set-icon  <group-id> --symbol ladybug.fill
cmux workspace-group move <group-id> (--to-index <n> | --before <group-id> | --after <group-id>)
cmux workspace-group focus <group-id>

create 会返回一个分组句柄(默认为 workspace_group:N)。传入 --json 可获取完整的结构化数据。

向 set-color 或 set-icon 传入空值可清除分组的颜色或图标。delete 是不可逆的:它会关闭每一个成员工作区。

#示例

将当前选中的工作区归入一个命名分组:

cmux workspace-group create --name manaflow

在已有分组内创建一个新工作区,例如接入一个 worktree 脚本:

cmux workspace-group new-workspace workspace_group:1

列出聚焦窗口中的分组:

cmux workspace-group list

#配置

每个分组的配置位于 ~/.config/cmux/cmux.json 中的 workspaceGroups 键下,以锚点工作区的工作目录作为键。请参阅配置参考,了解所支持的键,包括全局新建工作区放置位置,以及每个目录的颜色、图标、放置位置和右键菜单操作。

workspaceGroups 配置参考

#持久化

分组名称、锚点、固定状态、折叠状态、颜色和图标会与你的工作区一起保存,并在重新启动时恢复。分组归属信息存储在每个工作区上。