在VSCode中使用多个命令的快捷方式

6

我有一个现有的快捷方式,可以最大化终端窗口,

{
        "key": "ctrl+`",
        "command": "workbench.action.toggleMaximizedPanel"
}

我想在快捷方式中添加一个额外的命令,当终端窗口最大化时将焦点转移到终端窗口,当最小化时将焦点返回到编辑器窗口。这在 vscode 中是否可行?
1个回答

12
在 vscode v1.77 中,有一个新的命令 runCommands,它允许您运行一系列命令,就像传统的宏扩展一样。通过以下按键绑定,您可以在没有宏扩展的情况下完成所需操作:
{
  "key": "ctrl+`",   //  use the same keybinding below
  "command": "runCommands",
  "args": {
    "commands": [
      "workbench.action.toggleMaximizedPanel",
      "workbench.action.terminal.focus",
    ]
  },
  "when": "!terminalFocus"
},

{
  "key": "ctrl+`",   // same keybinding as above
  "command": "runCommands",
  "args": {
    "commands": [
      "workbench.action.toggleMaximizedPanel",
      "workbench.action.focusActiveEditorGroup",
    ]
  },
  "when": "terminalFocus"  // terminal will be focused when it is maximized
}

我注意到现在需要将面板居中对齐才能使其正常工作。


[在vscode 1.77之前]

我认为你需要使用一个宏扩展,比如multi-command,来实现一个按键绑定运行多个命令。一旦你安装了multi-command,在你的settings.json文件中:

      "multiCommand.commands": [
    
      {
          "command": "multiCommand.toggleTerminalAndFocusTerminal",
    
          "sequence": [
            "workbench.action.toggleMaximizedPanel",
            "workbench.action.terminal.focus",
          ]
        },
        
        {
          "command": "multiCommand.toggleTerminalAndFocusEditor",
    
          "sequence": [
            "workbench.action.toggleMaximizedPanel",
            "workbench.action.focusActiveEditorGroup",
          ]
        }
    ],

然后是这些按键绑定:

    {
      "key": "ctrl+`",
      "command": "extension.multiCommand.execute",
      "args": { "command": "multiCommand.toggleTerminalAndFocusTerminal" },
      "when": "!terminalFocus"
    },

    {
      "key": "ctrl+`",
      "command": "extension.multiCommand.execute",
      "args": { "command": "multiCommand.toggleTerminalAndFocusEditor" },
      "when": "terminalFocus"
    },

所以相同的按键绑定,Ctrl-backTick,将根据终端是否具有焦点触发两个命令之一 - 请注意"when": "!terminalFocus"表示当终端没有焦点时。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接