我前一个问题Why doesn’t this hotkey configuration for Sublime Text work?的另一个深度。现在我来实现sublime命令,实际上是一个令人困惑的方式来破解sublime有什么命令,因为在前一个线程中探索以找到用于打开浏览器的命令,最后我发现它的帮助@MattDMo。
然后我发现在Packages / Default文件夹中有一个名为open_in_browser.py的文件,我猜命令只是.py文件的文件名,但实际上我找不到相应的文件可能是将find_pre.py命名为find_prev ,然后将open_in_browser.py复制为open_browsers.py,并添加 {" keys":[" ctrl + b"] ,"命令":" open_browsers"} 以升华键盘图,但它不起作用。然后我意识到应该有一些地方将sublime命令注册到它们的实现中,所以如果有这样的机制,它是什么?我在哪里可以找到它?
答案 0 :(得分:2)
<强> TL; DR 强>
在Packages/User
目录中创建一个具有任何名称的文件。使用MyTestCommand
方法在run
等文件中创建一个类。使用蛇案例中的类名创建一个键映射,并且没有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
目录中的任何名称。
然后我们必须在用户keymap文件中创建键绑定:
{ "keys": ["ctrl+tab"], "command": "change_view" },
{ "keys": ["ctrl+shift+tab"], "command": "change_view", "args": {"reverse": true} },
正如您所看到的,该命令是snake_case
的类名而没有Command
后缀。这将使用命名参数运行类run
方法。
这是否回答了你的问题?如有任何错误,请进行调试 - 打开ST控制台(默认快捷键为 ctrl + `)