Shortcut for running terminal command in VS code

后端 未结 4 768
谎友^
谎友^ 2020-12-29 07:38

Is there a way to make a hotkey for running specific command in terminal? Say I want to compile my TypeScript files by hotkey and not to type to terminal \"tsc\" or any othe

相关标签:
4条回答
  • 2020-12-29 08:05

    You can accomplish this with VSCode tasks and then wire up your task to a keybinding. The downside to this approach is you have to have a tasks.json file in your workspace .vscode folder (it can't be global).

    Here is an example where I wanted to open a file in a custom GitHub remote:

    // tasks.json
    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "label": "Open in remote",
                "type": "shell",
                "command": "open https://github.custom.com/org/repo/blob/master/${relativeFile}#L${lineNumber}"
            }
        ]
    }
    
    // keybindings.json
    {
        "key": "ctrl+o",
        "command": "workbench.action.tasks.runTask",
        "args": "Open in remote"
    },
    

    Here are some more VS Code variables you can use if you are curious: https://code.visualstudio.com/docs/editor/variables-reference

    There is a long standing issue open here which should make this easier to do without tasks: https://github.com/microsoft/vscode/issues/871

    0 讨论(0)
  • 2020-12-29 08:06

    I don't think vscode by default can do this, but you can try this extension. That work for me.

    https://marketplace.visualstudio.com/items?itemName=mkloubert.vs-script-commands

    0 讨论(0)
  • 2020-12-29 08:12

    in addition to @mark ..

    "args": { "text": "npm run-script test | tee /dev/null \u000D" }

    this way it will run any script including bash scripts, that doesn't conflict to their arguments (e.g try rsync without the tee)

    0 讨论(0)
  • 2020-12-29 08:26

    Typically you would set up a build or another task or an npm script and then trigger that with a hotkey.

    There is another new way to do it with send text to the terminal.

    For example, try this in your keybindings (Preferences: Open Keyboard Shortcuts (JSON)):

    {
        "key": "ctrl+alt+u",
        "command": "workbench.action.terminal.sendSequence",
        "args": {
          "text": "node -v\u000D"
        }
    }
    

    or for an npm script:

     {
        "key": "ctrl+alt+u",
        "command": "workbench.action.terminal.sendSequence",
        "args": {
          "text": "npm run-script test\u000D"
        }
     }
    

    The first will run the node -v command (the \u000D is a return so it runs). I still recommend actually setting up a build task though, and then there are keychords for running your build task: Ctrl-shift-B. Or an npm script.

    For example, if you had a more complex script to run, see how to bind a task to a keybinding or how to keybind an external command.


    EDIT: As of v1.32 you can now do something like this:

    {
      "key": "ctrl+shift+t",
      "command": "workbench.action.terminal.sendSequence",
      "args": { "text": "tsc '${file}'\u000D" }
    }
    

    You can now use the built-in variables, like ${file}, with the sendSequence command in a keybinding. I wrapped ${file} in single quotes in case your directory structure has a folder with a space in the name. And \u000D is a return.

    0 讨论(0)
提交回复
热议问题