如何在 VisualStudio 代码中的终端之间切换?

我希望切换终端之间打开的视觉工作室代码。

对于这个 “在 VisualStudio 代码中在编辑器和集成终端之间切换焦点”问题,我正确地设置了焦点,但是我想在终端之间切换,而不仅仅是从代码切换到终端。

有办法吗?

64993 次浏览

我深深地看了一眼,发现了它:

{
"key": "shift+cmd+]",
"command": "workbench.action.terminal.focusNext",
"when": "terminalFocus"
}

:)

转到 FilePreferencesKeyboard Shortcuts或者按 Ctrl + k + Ctrl + s

然后单击 右上角角上的图标,打开 keybindings.json文件:

Visual Guide

尝试向该文件添加以下两个条目:

{
"key": "ctrl+pagedown",
"command": "workbench.action.terminal.focusNext",
"when": "terminalFocus"
},
{
"key": "ctrl+pageup",
"command": "workbench.action.terminal.focusPrevious",
"when": "terminalFocus"
}

注意: 在 Mac 上将 ctrl改为 cmd

alt + up/down left/right arrows在分割的终端之间切换。

如果 alt解除终端的焦点并使菜单对焦,那么将其添加到 设定文件中

// settings.json
"window.titleBarStyle": "custom",
"window.customMenuBarAltFocus": false

下面是我的方法,它提供了在活动终端之间导航以及在终端和编辑器窗格之间跳转的一致方法。您可以尝试将其直接添加到您的 keybindings.json,但我建议您通过键绑定 UI (Mac 上的 cmd+K cmd+S) ,以便您可以查看/管理冲突等。

有了这个,我可以使用 ctrl+x <arrow direction>导航到任何可见的编辑器或终端。一旦光标在终端部分,您可以使用 ctrl+x ctrl+upctrl+x ctrl+down循环通过活动的终端(注意,在屏幕上的分割终端之间移动是用 ctrl+x leftctrl+x right完成的)。

cmd-J仍然用于隐藏/显示终端窗格。

    {
"key": "ctrl+x right",
"command": "workbench.action.terminal.focusNextPane",
"when": "terminalFocus"
},
{
"key": "ctrl+x left",
"command": "workbench.action.terminal.focusPreviousPane",
"when": "terminalFocus"
},
{
"key": "ctrl+x ctrl+down",
"command": "workbench.action.terminal.focusNext",
"when": "terminalFocus"
},
{
"key": "ctrl+x ctrl+up",
"command": "workbench.action.terminal.focusPrevious",
"when": "terminalFocus"
},
{
"key": "ctrl+x up",
"command": "workbench.action.navigateUp"
},
{
"key": "ctrl+x down",
"command": "workbench.action.navigateDown"
},
{
"key": "ctrl+x left",
"command": "workbench.action.navigateLeft",
"when": "!terminalFocus"
},
{
"key": "ctrl+x right",
"command": "workbench.action.navigateRight",
"when": "!terminalFocus"
},

这是一个正在进行的工作,因为我试图在 VS Code 中模仿我的 emacs 行为,但是缺少一些关键元素,比如能够按名称导航到终端缓冲区(不使用鼠标/下拉框)。总的来说,我非常惊讶在一个令人惊叹的产品中糟糕的编辑器组/窗格导航用户体验,但是我正在努力适应它。

改进@Serhii Popov 的答案

使用 up 和 down 代替 page up 和 page down

转到 FilePreferencesKeyboard Shortcuts或者直接按 Ctrl + k + Ctrl + s。

然后单击右上角的图标打开 keybindings.json 文件:

Visual aid

然后将下面的对象添加到文件中的数组中:

[
...
{
"key": "ctrl+down",
"command": "workbench.action.terminal.focusNext",
"when": "terminalFocus"
},
{
"key": "ctrl+up",
"command": "workbench.action.terminal.focusPrevious",
"when": "terminalFocus"
}
...
]

注意: 在 Mac 上将 ctrl改为 cmd

在视窗上

切换终端 ctrl + ~

切换回代码编辑器 ctrl + 1

从1.56.0版本开始,VS 代码中就内置了对交换终端的支持:

新的键绑定

这个版本的终端有几个新的默认密钥绑定:

  1. 移动到先前的终端 -Ctrl+PageUp (macOS Cmd+Shift+])
  2. 移动到下一个终端 -Ctrl+PageDown (macOS Cmd+shift+[)
  3. 焦点终端选项卡视图 -Ctrl+Shift+\ (macOS Cmd+Shift+\)-终端选项卡预览

一如既往,可以删除或自定义这些默认密钥绑定 可以通过 keybindings 系统添加 keybindings。

在 Windows10上(不确定是 Linux 还是 Mac) :

在 VisualStudio 代码中使用 分割终端窗口分割终端窗口进行切换

Alt + Right arrow / Left arrow

Ctrl + J可以切换(显示/隐藏)控制台。

你可以在 vscode 中设置一个简单的自定义快捷键

  1. 您可以按 Ctrl-P 键并键入键盘快捷键
  2. 搜寻「终端机: 开关活动终端机」
  3. 设置任何你想要的组合键,我的是 Ctrl + K,因为它没有被使用

现在你可以不用鼠标切换到侧边栏终端,但是如果你只想切换到主终端 Ctrl + J

Using the Terminal Sidebar

请注意 小组的 VS 代码概念,因为在阅读这里的一些答案时,它可能会让你出错。

即在 同一组中的终端(CMD + OPT + up/down)或不同的 终端群(SHIFT + CMD + [/])之间切换有不同的默认快捷方式

我相信你要找的答案是 Cmd + Shift + [(和 Cmd + Shift + ])

我在 IDE 快捷键设置中使用了 Ctrl+PageDown/Ctrl+PageUp,我相信这是默认设置,因为我没有更改它们。

要找出您的机器上的快捷方式,转到 文件 > 参考资料 > 键盘快捷键并在搜索框中粘贴 workbench.action.terminal.focusNextworkbench.action.terminal.focusPrevious

这只能在终端组之间切换。因此,如果两个终端在同一个组中(也就是分开显示并排) ,它不会在这两个终端之间切换。若要在同一组中的终端之间切换,请使用“ Alt + LeftArrow”或“ Alt + RightArrow”。

在评论中澄清了这个并列案例,感谢@Victory Ifebhor。

我一直在试图找到相同的快捷方式,我发现 VS 代码有助于了解不同的 UI 组件和动作是如何调用的。

在这种情况下,一旦“键盘快捷方式”标签(在那里你可以查看和自定义快捷方式)是开放式搜索“预览终端组”或“下一个终端组”。

我们可以看到 VS 代码有默认的快捷方式:

  • 终端: 聚焦上一个终端组
  • 终端: 聚焦终端组中的上一个终端

查看搜索结果: enter image description here 我不知道哪一个是你最感兴趣的,但是,尝试每一个和一旦你发现你正在寻找的捷径: 使用它或定制它到你的喜好。

希望能帮上忙

如果其他人习惯于在 + [0-9]的选项卡之间切换,那么这个 keybindings.json中的映射可能会很有用:

  {
"key": "cmd+1",
"command": "workbench.action.terminal.focusAtIndex1",
"when": "terminalFocus"
},
{
"key": "cmd+2",
"command": "workbench.action.terminal.focusAtIndex2",
"when": "terminalFocus"
},
{
"key": "cmd+3",
"command": "workbench.action.terminal.focusAtIndex3",
"when": "terminalFocus"
},