更深入地了解我之前的问题 Why doesn’t this hotkey configuration for Sublime Text work? .现在我来实现 sublime 命令,破解 sublime 有什么命令真的是一种令人困惑的方式,因为在前一个线程中为了找到用于打开浏览器的命令而进行的探索,最终我在帮助下找到了它@MattDMo。
然后我发现在Packages/Default文件夹下有一个叫open_in_browser.py的文件,我猜commands只是.py文件的文件名,但实际上我找不到对应的文件可能是将 find_pre.py 命名为命令 find_prev,然后我将 open_in_browser.py 复制为 open_browsers.py,并添加 { "keys": ["ctrl+b"], "command": "open_browsers"} 升华键盘映射,但它不起作用。然后我意识到应该有一些地方将 sublime 命令注册到它们的实现中,那么如果有这样的机制,它是什么?我在哪里可以找到它?
最佳答案
长话短说
在 Packages/User
目录中创建一个任意名称的文件。使用 run
方法在文件中创建一个类,例如 MyTestCommand
。使用蛇形大小写的类名创建一个键映射,不带 Command
后缀。使用命名参数将任何内容传递给命令。
完整答案
无需注册任何内容即可创建自定义命令。文件名并不重要,因为 Sublime Text 只是扫描它的目录以查找 .py
脚本并自动执行它们(注册它们)。
这是我使用的示例脚本:
import sublime
import sublime_plugin
class ChangeViewCommand(sublime_plugin.WindowCommand):
def run(self, reverse=False):
window = self.window
group, view_index = window.get_view_index(window.active_view())
if view_index >= 0:
views = window.views_in_group(group)
if reverse:
if view_index == 0:
view_index = len(views)
if reverse:
new_index = view_index - 1
else:
new_index = (view_index + 1) % len(views)
window.focus_view(views[new_index])
那么它做了什么 - 切换到当前组中的下一个/上一个选项卡(默认行为围绕所有选项卡组)。
所以我们只需将它保存为 Packages/User
目录中的任何名称。
然后我们必须在我们的用户键映射文件中创建键绑定(bind):
{ "keys": ["ctrl+tab"], "command": "change_view" },
{ "keys": ["ctrl+shift+tab"], "command": "change_view", "args": {"reverse": true} },
如您所见,该命令是类名的snake_case
,没有Command
后缀。这将使用命名参数运行类的 run
方法。
这是否回答了您的问题?为了在出现任何错误时进行调试 - 打开 ST 控制台(默认快捷方式是 ctrl + `)
关于sublimetext2 - 我可以在 sublime 中创建自己的命令吗?如何将 python 实现与该命令相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24276143/