跳至内容

菜单

另请参阅

菜单参考

Sublime Text 提供了多个可以修改的菜单,例如,通过添加菜单项。

文件格式

格式描述
格式JSON(带注释)
扩展名.sublime-menu
名称可用菜单列表中的一个。有关完整名称列表以及每个名称代表的菜单,请参阅 菜单类型
位置Packages 下的任何位置
内容菜单项 列表

示例

以下是默认 Main.sublime-menu 文件的摘录。

json
[
    {
        "caption": "Edit",
        "mnemonic": "E",
        "id": "edit",
        "children":
        [
            { "command": "undo", "mnemonic": "U" },
            { "command": "redo_or_repeat", "mnemonic": "R" },
            {
                "caption": "Undo Selection",
                "children":
                [
                    { "command": "soft_undo" },
                    { "command": "soft_redo" }
                ]
            },
            { "caption": "-", "id": "clipboard" },
            { "command": "copy", "mnemonic": "C" },
            { "command": "cut", "mnemonic": "t" },
            { "command": "paste", "mnemonic": "P" },
            { "command": "paste_and_indent", "mnemonic": "I" },
            { "command": "paste_from_history", "caption": "Paste from History" }
        ]
    }
]

图像

The default context menu in the editing area.

A modified context menu in the editing area.

可用菜单

.sublime-menu 文件的文件名指定要修改的应用程序中的菜单。

以下菜单可用

文件/菜单名称描述
主菜单主菜单
上下文编辑区域中的上下文菜单
在文件中查找单击 在文件中查找 面板中的“...”按钮时出现。
侧边栏侧边栏中每个节点的上下文菜单
侧边栏挂载点侧边栏中顶级节点的附加上下文菜单项
选项卡上下文选项卡栏的上下文菜单
小部件上下文各种小部件中输入字段的上下文菜单,包括命令面板、转到任何位置、查找面板以及插件打开的面板

此外,当您单击状态栏中的相应部分时,以下四个菜单将打开

  • 编码
  • 行尾
  • 缩进
  • 语法

Demonstration of a status bar menu.

选择后,菜单项可以调用命令(带参数),也可以打开子菜单。

可用的属性是

  • 命令名称,
  • 命令的参数,
  • ID,
  • 标题,
  • 助记符和
  • 子菜单。

为了正常工作,菜单项必须至少提供

  • 命令名称,
  • 标题和子菜单,
  • 仅标题,或
  • ID(请参阅 下方)。

解析菜单项时,将应用以下规则

  1. 具有子菜单的菜单项不能调用命令。如果使用 分隔符标题,它将被渲染为一个字面上的连字符。

  2. 如果未提供标题,则从命令的description方法推断标题。如果既未提供标题也未提供命令,则标题将为空字符串。

  3. 用于助记符的字符必须包含在项目的标题中。助记符区分大小写。

  4. 引用丢失命令的菜单将被禁用。

  5. 菜单项可以通过其引用的命令隐藏或禁用。

分隔符

分隔符是标题为-且没有子菜单的菜单项。它们通常用于对具有相似目的或以其他方式相关的菜单项进行分组。分隔符不能调用命令。子菜单的存在会导致菜单分隔符被渲染为一个常规项,其标题为单个连字符。

多个连续的分隔符将减少为一个,并且菜单开头或结尾的分隔符不会显示。

.sublime-menu 文件的加载顺序与包相同。具有相同名称的菜单文件将被连接,除非指定了 ID(参见 下面)。

同一包中的菜单文件按字典顺序加载,从根文件夹开始,然后以相同的方式遍历子文件夹。

作为特殊情况,在标准非 ID 部分中声明的用户包中的菜单项始终插入在来自其他包的任何标准项之后。

项目 ID

当菜单项指定 ID 时,将在菜单内搜索一个单独的部分,如果不存在,则在菜单末尾创建。此 ID 查找仅向前进行。

ID 确定部分的名称,具有匹配 ID 的菜单项将是此部分中的第一个项目。文件中的所有后续项目将被追加到 ID 的部分,直到找到另一个具有 ID 的项目。

如果来自不同.sublime-menu 文件的两个菜单项通过 ID 引用同一个项目,Sublime Text 将使用新参数覆盖项目的先前参数(如果有)。子元素扩展子菜单。所有后续项目将被追加到 ID 的部分,直到找到另一个具有 ID 的项目。

通常的做法是为分隔符和具有子菜单的项目分配 ID,以便其他包或用户自己可以轻松地自定义菜单。这允许将项目追加到分隔符引入的部分,并将项目追加到子菜单。

注意

由于严格的向前查找,在一个菜单中可能存在多个具有相同 ID 的不同项目。由于这可能会造成潜在的混淆,因此不建议这样做。

示例:以下三个 ID 在菜单中按此顺序定义:test, test2, test

具有第二个“test”ID 的项目可以使用以下 ID 组合进行定位:test, test2, testtest, testtest2, test

每个菜单项都可以有一个子菜单。将鼠标指针悬停在具有子菜单的菜单项上将显示其下分组的项目。子菜单是具有自己 ID 层次的独立菜单。

为了从不同的菜单文件扩展子菜单,必须在两个地方指定 ID 以定位正确的项目。

主菜单

与所有其他菜单不同,主菜单的根菜单表示菜单栏中的菜单项(文件、帮助等)。

命令接口

菜单项可以动态地

  • 隐藏,
  • 禁用,
  • 选中,或
  • 分配不同的标题。

为此,命令必须在其类中实现所需的方法。每个实现的方法都将使用在相应菜单项中指定的参数调用。如果该调用失败,该方法将立即再次调用,但不带参数。

  • 是否可见
  • 是否启用
  • 是否选中
  • 描述

其中一些方法也会影响命令面板。

侧边栏中的上下文菜单

侧边栏侧边栏挂载点 菜单与其他菜单不同,它们提供有关所选项目(s)的上下文信息。选定的目录和文件作为列表传递给指定命令,以 files 参数的形式。