【问题标题】:ST3: How to use a plugin's commands in a macro?ST3:如何在宏中使用插件的命令?
【发布时间】:2014-03-12 11:08:11
【问题描述】:

在 Sublime Text 3 中,我想创建一个宏来粘贴当前文件的“项目的相对路径,已编码”,这是由优秀的Sidebar Enhancements 提供的命令。

我已激活控制台日志记录以跟踪我的实验:

  • 打开控制台 (Ctrl-`)
  • sublime.log_commands(True)

当我执行我想要捕捉的动作时,我在控制台中看到:

command: side_bar_copy_path_absolute_from_project_encoded
command: paste

但是,当我记录动作时,保存时生成的 json 是:

[
    {
        "args": null,
        "command": "paste"
    }
]

如果我手动破解宏(从Unofficial Sublime DocsSideBarEnhancements / Side Bar.sublime-menu 获取参数):

[
    { "command": "side_bar_copy_path_relative_from_project_encoded", "args": {"paths": []} },
    { "command": "paste", "args": null  }
]

…然后播放宏,我在控制台看到以下内容:

Unknown macro command side_bar_copy_path_relative_from_project_encoded

(我还尝试将null 作为side_bar_copy_path_relative_from_project_encoded 的参数)。

我需要在宏命令中引用包名或类名吗?有什么建议吗?

【问题讨论】:

    标签: python macros sublimetext sublimetext3


    【解决方案1】:

    耶哈!想通了 - 我相信宏可能不支持所有命令,所以我尝试了一个插件:

    import sublime, sublime_plugin
    
    '''
        Paste the current file's Relative Path From Project (Encoded).
        Requires https://github.com/titoBouzout/SideBarEnhancements to be installed
    
        First save this file as:
        ~/Library/Application Support/Sublime Text 3/Packages/User/paste-path.py
    
        More details about writing plugins:
        http://docs.sublimetext.info/en/latest/reference/plugins.html
    
        To trigger the command with 'Command Option Shift p',
        add the following to your Sublime Text > Preferences > Keybindings - User
    
        [
            { "keys": ["super+option+shift+p"], "command": "paste_path"}
        ]
    '''
    
    class PastePathCommand(sublime_plugin.WindowCommand):
        def run(self):
            self.window.run_command("side_bar_copy_path_relative_from_project_encoded", {"paths": []})
            self.window.run_command("paste")
    

    这里是一个要点:https://gist.github.com/9505770


    编辑:抱歉,信息不完整!您需要将此文件另存为:

    ~/Library/Application Support/Sublime Text 3/Packages/User/paste-path.py

    更多信息:https://docs.sublimetext.io/reference/plugins.html

    【讨论】:

    • ST 宏仅支持文本命令。我对某人在 ST 论坛上发布的插件进行了一些修复,以运行任何类型的命令。有关详细信息,请参阅github.com/skuroda/ImprovedMacros/blob/master/improved_macros/…。我的初衷是构建一些东西来替换默认的宏功能,但没有找到捕获所有键、命令等的好方法。
    • 我真的很想要这个,但是当我将您提供的命令复制到我的键绑定 - 用户文件中时,它不起作用。之前的代码 import sublime, sublime plugin 和最后被调用的 class 是怎么回事?
    • 对不起,我遗漏了一些重要的细节!这是编辑我的答案...
    • 哎呀,花了太长时间,无法编辑我的评论:……这是一个插件,而不是键绑定、首选项、sn-p、命令或宏。 Sublime 是用 python 编写的; run_command() 是在 sublime 或 sublime_plugin 中定义的函数,因此那些(函数?类?)被包含在顶部。我不是专家,但它对我有用:) 祝你好运! (编辑我的答案)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2017-11-28
    • 2014-08-07
    • 1970-01-01
    相关资源
    最近更新 更多