当我想在侧栏中显示当前文件然后浏览文件夹结构时,Sublime Text中有时会出现这种情况。
这可以使用命令reveal_in_side_bar
和focus_side_bar
来实现,但是它们必须绑定到两个单独的键组合,所以我必须做2个键盘组合才能实现我的目标,理想情况下我喜欢只有一个(我很懒)。
有没有办法将多个命令绑定到单个组合键?例如像这样的东西:
{
"keys": ["alt+shift+l"],
"commands": ["reveal_in_side_bar", "focus_side_bar"]
},
基于@ artem-ivanyk和@d_rail的回答
1)工具→新插件
import sublime, sublime_plugin
class RevealInSideBarAndFocusCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.run_command("reveal_in_side_bar")
self.window.run_command("focus_side_bar")
另存为RevealInSideBarAndFocus.py
2)Sublime Text 2→首选项→键绑定 - 用户
将它绑定到快捷方式:
{ "keys": ["alt+shift+l"], "command": "reveal_in_side_bar_and_focus" }
答案 0 :(得分:34)
虽然问题是一年之久,但这可能会帮助那些仍在寻找答案的人。
最近,jisaacks开发了一个名为Chain of command
的新软件包。它的主要任务是完全按照您的要求执行,一次链接多个命令。
这个包可以在这里找到: https://github.com/jisaacks/ChainOfCommand
可以在下面找到工作的一个例子。
我们假设你想要一个键绑定来复制当前文件。您可以设置此键绑定:
{
"keys": ["super+shift+option+d"],
"command": "chain",
"args": {
"commands": [
["select_all"],
["copy"],
["new_file"],
["paste"],
["save"]
]
}
}
这将选择所有文本,复制它,创建新文件,粘贴文本,然后打开保存文件对话框。
答案 1 :(得分:30)
更新@Artem Ivanyk的回答。我不知道Sublime有什么变化,但是这个解决方案对我不起作用,但是我得到了这个工作:
import sublime, sublime_plugin
class RevealInSideBarAndFocusCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.run_command("reveal_in_side_bar")
self.window.run_command("focus_side_bar")
{ "keys": ["ctrl+shift+8"], "command": "reveal_in_side_bar_and_focus" }
是的,我正在使用Build 2220
答案 2 :(得分:25)
偶然发现了类似的问题。当试图记录涉及“保存”命令的宏时,控制台向我扔了“未知宏命令保存”消息。 用基本插件解决了这个问题。
1) 工具→新插件
import sublime, sublime_plugin
class MyChainedActionsCommand():
def run(self):
self.view.run_command("reveal_in_side_bar")
self.view.run_command("focus_side_bar")
您需要为类名使用上部驼峰案例表示法。 ST2为命令名公开此类,删除“Command”后缀,其余部分转换为小写 - 下划线表示法。即在此示例中,MyChainedActionsCommand
可以在sublime的控制台中运行:view.run_command("my_chained_actions")
2) Sublime Text 2→首选项→键绑定 - 用户
将它绑定到快捷方式:
{ "keys": ["alt+shift+l"], "command": "my_chained_actions" }
注意逗号。
答案 3 :(得分:8)
答案 4 :(得分:4)
您可以创建一个宏来执行此操作。对于Sublime Text,宏基本上只是链式命令。然后,您为该宏创建一个键绑定。你可以使用Tools > Record Macro
创建一个宏,然后执行你的命令(注意宏记录键击,所以你想要使用菜单栏中的命令不引起冲突),然后{{ 1}},然后是Stop Recording
。保存宏后,您可以在Sublime Text中重新打开它,以确保它只记录您想要的内容。
答案 5 :(得分:1)
在Artem Ivanyk回复的基础上,这是一个与参数一起使用的ChainedActions版本。 actions
和args
需要两个参数。两者都是列表,列表中的每个命令都使用相应的参数执行。这个公认的愚蠢的例子插入了两个片段:view.run_command("chained_actions", {"actions":["insert_snippet","insert_snippet"],"args":[{"contents": "
($ 0)“},{”contents“:”1($ 0)“}]})`
import sublime
import sublime_plugin
class ChainedActionsCommand(sublime_plugin.TextCommand):
def run(self, edit, actions, args):
for i, action in enumerate(actions):
self.view.run_command(action, args[i])
答案 6 :(得分:1)
我尝试使用相同的命令,但我最终得到一个错误,当文件的文件夹已经展开时,sublime移动了我的焦点侧边栏顶部,我可以看到打开的文件。为了改善这种行为,我写了一个新的插件,确保它会按照我的意愿行事,这里是https://github.com/miguelgraz/FocusFileOnSidebar
答案 7 :(得分:1)
我正在使用Sublime text3 build - 3083.它只是通过“在侧栏中显示”来解决问题,焦点自动生成。
我在侧边栏中添加了自定义键盘快捷键'显示'通过在Preferences-> Key Bindings-User:
下添加以下语句[
{ "keys": ["ctrl+shift+r"], "command": "reveal_in_side_bar"}
]
选项 - '在侧边栏中显示' 图像文件类型缺失,因为右键单击鼠标时不会出现上下文菜单。在这种情况下,自定义键盘快捷键很方便。