14

如何在SublimeText 2中添加自定义菜单项。

有任何想法吗 ??
我看到有一个Main.sublime-menu文件,但不知道如何编辑它。

谢谢!

4

3 回答 3

15

*.sublime-menu 文件就是 JSON。您可以在用户目录中创建 Main.sublime-menu,它将与其他菜单条目合并。查看第三方插件拥有的 Main.sublime-menu 文件可能会有所帮助。这些通常要短得多,因此可能更容易理解您需要在每个条目中定义的一些内容。

编辑

您可以使用以下插件作为插件打开带有任意文件的记事本。

import sublime
import sublime_plugin
import subprocess
import threading
class OpenNotepadCommand(sublime_plugin.TextCommand):
    def run(self, edit, filename=None):
        th = NotepadThread(filename)
        th.start()

class NotepadThread(threading.Thread):
    def __init__(self, filename=None):
        self.filename = filename
        threading.Thread.__init__(self)

    def run(self):
        if self.filename is not None:
            subprocess.call("notepad.exe %s" % self.filename)
        else:
            subprocess.call("notepad.exe")

当您创建菜单项时,请使用以下命令和参数。

{
    "command": "open_notepad",
    "args": { "filename": "<the absolute path here>"}
}
于 2013-04-22T17:28:15.027 回答
12

如果您想要的只是运行命令,则更简单的选择。在 Packages/User 目录中创建一个文件 Context.sublime-menu,并添加以下内容:

[
    { "caption": "<Your caption here>", "command": "exec", "args": {"cmd": ["<your cmd name>", "<arg1>", "<arg2>", <...>]} }
]

示例:将菜单项添加到刚刚运行 dir 的上下文菜单:

[
   { "caption": "List files in current dir", "command": "exec", "args": {"cmd": ["dir"]} }
]
于 2013-09-13T13:24:27.503 回答
1

我知道这种方式太晚了,无法加入派对并添加我的 2 美分。无论如何,Main.sublime-menu 是一个文件,它允许您将菜单项添加到顶部菜单,即 [文件、编辑、选择、查找、查看、转到等]

我最近添加了一个新部分“开发”只是为了弄清楚。我还想要一种方法来触发特定浏览器的浏览器预览。一探究竟。

  [
    {
    "caption": "Dev",
    "mnemonic": "Z",
    "id": "dev",
    "children": [
      {
        "caption" : "Previews",
        "children": [
          { "caption": "Markdown Live Preview", "command": "new_markdown_live_preview", "id": "markdown_live_preview" },
          { "caption": "Preview in Default Browser", "command": "view_in_browser", "id": "markdown_live_preview" },
          { "caption": "Preview in Firefox", "command": "view_in_browser", "args": { "browser": "firefox" }, "id": "markdown_live_preview" },
          { "caption": "Preview in Chrome","command": "view_in_browser", "args": { "browser": "chrome" }, "id": "markdown_live_preview" },
          { "caption": "Preview in Safari", "command": "view_in_browser", "args": { "browser": "safari" }, "id": "markdown_live_preview" },
          ]
        },
      ]
    }
  ]

无论如何,这仍然适用于 ST3。以防万一有人在这里绊倒。

于 2019-04-05T08:13:23.087 回答