How to switch the cursor between terminal and code in VSCode?

I just started using VSCode and I'm looking for a way of, while having both the code open and the terminal(the one inside VSCode), switch between typing on these parts of the editor with a shortcut. Looked around the web but the best I could find would be to close and open the terminal.

Any ideas how to do this?


Solution 1:

I found bit hard to press ctrl+`. It also close the terminal when we press ctrl + '

So, I configured mine as following:

{
  "key": "ctrl+j",
  "command": "workbench.action.focusActiveEditorGroup",
  "when": "!terminalFocus"
},
{
  "key": "ctrl+k",
  "command": "workbench.action.terminal.focus",
  "when": "terminalFocus"
}

Step to configure:

  1. Go to: File > Preferences > keyboard shortcuts
  2. then in the search-bar search for "focus terminal"
  3. select "workbench.action.terminal.focus" and then ctrl + k or press your custom key and then press enter.
  4. Similarly, in the search-bar search for "focus active editor group
  5. select "workbench.action.focusActiveEditorGroup" and then press ctrl + j or press your custom key and then press enter.

After the above setup:

  • Press ctrl + k to focus cursor on terminal
  • Press ctrl + j to focus cursor on coding section without closing terminal

Solution 2:

Refer to this Question/Answers Switch focus between editor and integrated terminal in Visual Studio Code on Stackoverflow, I think @Trav L answer might be closed one. But need to config a little bit more.

VS Code v1.26.1 as a base version

  1. Open keyboard shortcut editor from menu File->Preferences->Keyboard Shortcuts (Ctrl+K Ctrl+S)
  2. Click on the link keybindings.json above the screen.
  3. Overwrite your custom keyboard shortcuts on the right side panel, the keybindings.json file will store in your <user dir>\AppData\Roaming\Code\User. With this values you can overloading the key shortcut with using when keyword like code below.

Credit: @wgj user of Stackoverflow

// Toggle between terminal and editor focus
{ "key": "ctrl+`", "command": "workbench.action.terminal.focus"},
{ "key": "ctrl+`", "command": "workbench.action.focusActiveEditorGroup", "when": "terminalFocus"}
  1. Now you can toggle cursor position by press the same key Ctrl+`, VS Code will recognize base by situation where the cursor is.

Special 1

Use Settings Sync extension for saving your custom key binding and others to your secret GIST (Github), for switching between workstation, it's recommended from me. It's quite convenient for me.

Special 2

Some time I need to kill the terminal pane for get the whole code area screen. So I also setting this to keybindings.json. The result is equal to clicking on the X mark of the terminal pane. (Just change to your favorite key if you would like to)

{ "key": "ctrl+k ctrl+`", "command": "workbench.action.terminal.kill" },

Solution 3:

Generally VS Code uses ctrl+j to open Terminal so I created a keybinding to switch with ctrl+k combination, like below at keybindings.json:

[{
    "key": "ctrl+k",
    "command": "workbench.action.terminal.focus"
},
{
    "key": "ctrl+k",
    "command": "workbench.action.focusActiveEditorGroup",
    "when": "terminalFocus"
}]

Solution 4:

You do this by setting the keybindings for Focus Terminal and Focus Active Editor Group. These two will allow you to switch the focus between the Editor and the Terminal, without having to just close the terminal.

The other positive is if you perform some action that causes another panel to open such as Output or Problems. Using the keystroke for the editor group will change your focus back to the editor.

I can't say what these are by default because I set this long ago in Code. As you can see from the screenshot below I set them to the same keybinding: ctrl + shift + i.

This makes them act as a toggle switch so it takes the focus back and forth. You can basically just hold down ctrl + shift, then hitting i will move your focus back and forth.

enter image description here

Solution 5:

Here is how to have the same hotkey to switch back and forth from code to terminal for maximum productivity:

    {
        "key": "f1",
        "command": "workbench.action.focusActiveEditorGroup",
        "when": "terminalFocus"
    },
    {
        "key": "f1",
        "command": "workbench.action.terminal.focusNext",
        "when": "!terminalFocus"
    },