文档 菜单

Sublime Merge 中的菜单由以 .sublime-menu 结尾的文件定义。菜单使用 JSON,顶层结构为数组。每个绑定都是一个 JSON 对象,包含定义菜单项文本及其应执行的操作的信息。

示例

以下是 .sublime-menu 文件格式的示例。

[
    {
        "caption": "File",
        "mnemonic": "F",
        "id": "file",
        "children":
        [
            { "command": "new_window", "caption": "New Window" },
            { "command": "close_window", "caption": "Close Window" },
            { "caption": "-", "id": "exit" },
            { "command": "exit", "caption": "Exit", "mnemonic": "x", "platform": "Windows" },
            { "command": "exit", "caption": "Quit", "mnemonic": "Q", "platform": "Linux" },
        ]
    }
]

条目

每个菜单项都是一个 JSON 对象,包含一个或多个键。支持的键列表包括

"caption"
菜单项的文本
"mnemonic"
用作激活条目的键的字符。仅适用于 Windows 和 Linux。必须与 "caption" 中字符的大小写匹配。
"command"
激活条目时要执行的命令的字符串
"args"
发送到命令的 args 的 JSON 对象
"children"
用于创建子菜单的条目 JSON 数组
"id"
菜单条目的唯一字符串。用于具有 "children" 的菜单条目,以允许添加其他子条目。
"platform"
以下字符串之一:"OSX""!OSX""Windows""!Windows""Linux""!Linux"。控制在哪些平台上显示条目。

每个菜单项至少需要 "caption" 键(用于非功能性条目)或 "command" 键(用于执行操作的条目)。

可用菜单和变量

Sublime Merge 有 14 个可以自定义的菜单。菜单具有可以在 "caption""args" 字段中使用的上下文变量。

可用变量

以下上下文变量在所有菜单中都可用

$working_dir
仓库工作目录的路径
$git_dir
git 目录的路径,即 .git/
$commit
所选提交的完整哈希值
$short_commit
所选提交的简短哈希值
$head
头部的分支名称或提交哈希值
$head_ref
分支名称或 HEAD(处于分离头状态时)

可用菜单

支持自定义的菜单是

Main.sublime-menu
应用程序的主菜单
Action.sublime-menu
工具栏中搜索右侧 ... 按钮的菜单
Advanced Commit.sublime-menu
提交按钮右侧向下箭头按钮的菜单
Branch Section.sublime-menu

位置选项卡中 分支 标题的上下文菜单

Branch Folder.sublime-menu

位置选项卡中分支文件夹的上下文菜单

上下文变量

$branch
分支文件夹名称
$ref
部分分支文件夹引用
Branch.sublime-menu

位置和提交选项卡中分支的上下文菜单

上下文变量

$branch
分支名称
$ref
分支引用
Commit.sublime-menu

提交选项卡中提交的上下文菜单

上下文变量

$commit
完整的提交哈希值
$short_commit
简短的提交哈希值
Diff Context.sublime-menu

差异控件的上下文菜单

上下文变量

$path
相对于仓库的文件路径
$line
选择的行
$col
选择的列
File Mode Context.sublime-menu
对文件权限更改的上下文菜单
File.sublime-menu

文件标题右侧 ... 按钮的菜单

上下文变量

$path
相对于仓库的文件路径
Hunk.sublime-menu

块标题右侧 ... 按钮的菜单

上下文变量

$path
块的相对于仓库的文件路径
Unmerged File.sublime-menu

文件 选项卡中未合并文件的上下文菜单

$path
相对于仓库的文件路径
Untracked File.sublime-menu

文件 选项卡中未跟踪文件的上下文菜单

$path
相对于仓库的文件路径
Modified File.sublime-menu

文件 选项卡中已修改文件的上下文菜单

$path
相对于仓库的文件路径
Index File.sublime-menu

文件 选项卡中已暂存文件的上下文菜单

$path
相对于仓库的文件路径
Remote Section.sublime-menu

位置选项卡中 远程 标题的上下文菜单

Remote.sublime-menu

位置选项卡中远程的上下文菜单

上下文变量

$remote
远程名称
Remote Branch Folder.sublime-menu

位置选项卡中远程分支文件夹的上下文菜单

上下文变量

$branch
远程分支文件夹名称
$ref
远程分支文件夹的部分引用
Remote Branch.sublime-menu

位置和提交选项卡中远程分支的上下文菜单

上下文变量

$branch
远程分支名称
$ref
远程分支引用
Stash Section.sublime-menu

位置选项卡中 Stashes 标题的上下文菜单

Stash.sublime-menu

位置和提交选项卡中暂存区的上下文菜单

上下文变量

$stash
暂存区索引
Submodule Section.sublime-menu
位置选项卡中子模块标题右侧齿轮图标的菜单
Submodule.sublime-menu

位置选项卡中子模块的上下文菜单

上下文变量

$submodule_name
子模块名称
$submodule_path
子模块路径
Tag Section.sublime-menu

位置选项卡中 Tags 标题的上下文菜单

Tag.sublime-menu

位置选项卡中标签的上下文菜单

上下文变量

$tag_name
标签名称
$ref
标签引用
Remote Tag.sublime-menu

专用于远程命令的标签的上下文菜单。此菜单对每个远程启用,无论该标签是否在远程上存在。

上下文变量

$tag_name
标签名称
$ref
标签引用
$remote
远程名称
Widget Context.sublime-menu
各种面板中文本输入的上下文菜单。从技术上讲,此文件名可以通过 Widget.sublime-settings 中的 "context_menu" 设置进行更改。

添加到子菜单

使用条目的 "id" 键,可以将条目添加到子菜单中。添加子菜单条目时,仅指定父条目的 "id""children" 键,并将 "children" 的值设置为要追加到子菜单的条目数组。

例如,要将运行 git gc 的条目添加到 Repository 菜单,请创建一个类似于以下的条目

[
    {
        "id": "repository",
        "children":
        [
            {
                "caption": "Cleanup Repo",
                "command": "git",
                "args": {"argv": ["gc"]}
            }
        ]
    }
]

要查找条目的 "id",请参阅 Default.sublime-package 包中的 Main.sublime-menu 文件。有关如何查找包并查看内容的信息,请参阅 Packages 文档

自定义

用户可以通过在他们的 Packages/User/ 目录中创建一个适当命名的文件来自定义可用的菜单。

如果您不确定 Packages/User/ 目录在哪里,您可以通过 Sublime Merge 中的 Preferences ▶ Browse Packages… 轻松访问它。

示例

要自定义位置选项卡中远程的上下文菜单,请创建一个名为 Packages/User/Remote.sublime-menu 的文件。添加以下内容将创建一个条目,该条目将修剪陈旧的引用。

[
    {
        "caption": "Prune",
        "command": "git",
        "args": {"argv": ["remote", "prune", "$remote"]}
    }
]