#工作区分组
工作区分组让你能够将工作区嵌入侧边栏中可折叠的命名分组。每个分组都有一个隐式的锚点工作区、一个用于在分组内创建新工作区的可自定义 + 按钮,以及用于重命名、固定、取消分组和编辑配置的右键操作。
#核心概念
#锚点工作区
每个分组都恰好由一个称为锚点的工作区拥有。侧边栏中的分组标题栏就是锚点的呈现形式——锚点没有单独的行。点击标题名称区域会聚焦到锚点的面板;点击箭头则切换折叠状态。
A group's anchor is always a brand new workspace at creation time; grouping a selection or creating a group never promotes one of your existing workspaces into the anchor. (Closing an anchor later does promote the group's first remaining member, see below.) The anchor's working directory is inherited from the first selected workspace when grouping a selection, or from the active workspace when creating via the CLI without --cwd.
Closing the anchor workspace closes only that workspace and promotes the group's first remaining member (the earliest one still in the group's order) to be the new anchor, so the group and its other members stay intact (the promoted member then shows the group name as the header). When the anchor is the group's only workspace, the group is removed. To flatten a group into ungrouped workspaces use Ungroup; to close every workspace in a group use Delete Group.
#分组标识
一个分组拥有名称、图标(一个 SF Symbol,默认为 folder.fill)以及一个可选的自定义颜色。这些与锚点工作区自身的自定义设置相互独立。锚点的颜色和图标在创建时取自分组,但之后两者可以各自变化。
#固定
分组可以独立于单个工作区的固定状态进行固定。被固定的顶级行,无论是单个工作区还是分组,都会排在未固定的行之上。在每个层级内,分组和工作区会保持你拖动它们时形成的顺序。
侧边栏自上而下排列顶级行:
- 已固定的顶级行(工作区和分组)。
- 未固定的顶级行(工作区和分组)。
#创建分组
可以通过键盘快捷键或侧边栏上下文菜单创建组。空组会插入一个新的锚点工作区作为组标题。基于选择的组会把这个锚点插入到所选项上方,并将所选工作区移入组中。组创建后,你可以从组标题管理它并向其中添加工作区(见下方“管理组”)。
#通过键盘快捷键
按 ⌃⌘G 创建新的空工作区组。在侧边栏中选择两个或更多工作区,然后按 ⌘⇧G 对所选项分组。两种方式都会创建一个新的锚点工作区,并自动将组命名为 Group 1、Group 2 等。你可以随时通过标题上下文菜单重命名。
单标签分组无法通过快捷键创建。请使用工作区右键菜单中的 New Group from Workspace 项来创建。
#通过工作区右键菜单
右键点击侧边栏中的任意工作区,选择“新建空工作区组”、“从工作区新建组”,或者在选择多个工作区时选择“从所选项新建组”。侧边栏列表下方的空白区域也提供“新建空工作区组”。这些方式使用与快捷键相同的自动命名行为。
#管理分组
分组创建后,可以通过其标题的右键菜单以及标题上的 + 按钮来管理分组并向其中添加工作区。这两者都不会创建新分组。
#通过分组标题栏右键菜单
右键单击现有分组标题,可使用 Rename Group…、Pin Group / Unpin Group、Edit Group Config…(会打开 ~/.config/cmux/cmux.json)、Open Workspace Groups Docs、Ungroup Workspaces 以及 Delete Group。Ungroup Workspaces 会保留工作区,仅移除分组容器。Delete Group 会关闭分组标题工作区以及分组内的所有工作区;如果分组包含子工作区,会先提示确认。
#通过分组标题栏上的 + 按钮
将鼠标悬停在分组标题上即可显示末尾的 + 按钮。单击它可在分组中以锚点工作目录创建一个新工作区。右键单击它可使用 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 delete <group-id> --close-workspaces
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 --from workspace:1,workspace:2在已有分组内创建一个新工作区,例如接入一个 worktree 脚本:
cmux workspace-group new-workspace workspace_group:1列出聚焦窗口中的分组:
cmux workspace-group list#配置
每个分组的配置位于 ~/.config/cmux/cmux.json 中的 workspaceGroups 键下,以锚点工作区的工作目录作为键。请参阅配置参考,了解所支持的键,包括全局新建工作区放置位置,以及每个目录的颜色、图标、放置位置和右键菜单操作。
#持久化
分组名称、锚点、固定状态、折叠状态、颜色和图标会与你的工作区一起保存,并在重新启动时恢复。分组归属信息存储在每个工作区上。