在编辑器和集成终端之间切换焦点

1134

有人知道在Visual Studio Code中,Mac和Linux系统下在编辑器和集成终端之间切换焦点的键盘快捷键吗?


78
"ctrl" + "`"将是最好的"#->Linux"。 (说明:该句话并不完整,缺少上下文信息可能会影响准确性。) - muthukumar selvaraj
47
在OS X系统中,按下ctrl + '`'键也可以使用,无需进行任何额外的键绑定。 - nataliastanko
19
ctrl + ' ` ' 也能在Windows上完美运行! - Ehtesham Z
15
CTRL+```的问题在于即使已经存在一个终端,它也会创建一个新的终端。 - Guss
12
不再是@Guss(v1.55.0) - danno
显示剩余4条评论
28个回答

1893
虽然 VS Code 有很多模态切换和导航快捷方式,但没有专门用于“从编辑器到终端的移动,再返回编辑器”的切换。不过,您可以通过重载 key 并使用 when clause 来组合这两个步骤。

解决方案

您可以通过在keybindings.json文件中添加适当的设置来实现所需的效果。以下是所需步骤:

  1. 打开命令面板Ctrl+Shift+P Windows/Linux或P Mac)。

  2. 键入“Preferences: Open Keyboard Shortcuts (JSON)”,然后按Enter

  3. 将以下条目添加到keybindings.json文件中:

// Toggle between terminal and editor focus
{
    "key":     "ctrl+`",
    "command": "workbench.action.terminal.focus"
},
{
    "key":     "ctrl+`",
    "command": "workbench.action.focusActiveEditorGroup",
    "when":    "terminalFocus"
}

使用这些快捷键,您可以使用相同的按键在编辑器和集成终端之间进行切换。

注意

这里建议的组合键现在已经作为 VSCode 的默认设置内置(自从版本 1.72.2,或者更早)。在尝试添加之前,请查看是否 ctrl + ` 已经可以使用。

注意

在现代版的 VS Code 中(截至 2022 年),默认键盘快捷键(JSON)文件是只读的,因此对于自定义设置,您需要编辑一个单独的专用文件 keybindings.json

更多信息可在官方 Visual Studio 文档页面中找到:


66
目前来看,这是最符合人体工程学原理的最佳答案:扩展现有的键绑定。赞! - mloskot
12
谢谢,这个方法很有效并且节省了很多时间。对于使用国际键盘的用户来说:"ctrl+"可以指定为"ctrl+oem_3"。 - esel
15
@Roman 1.18.0的行为肯定比我写答案时要好,但我认为上面那个仍然更好。区别在于按下按键后终端不会消失,只会转移焦点。我恰好喜欢保持我的终端显示 :) - wgj
45
请注意,这些快捷方式应该被粘贴到 keybindings.json 文件中。 - pseudomarvin
61
从编辑器打开keybindings.json文件:CMD-SHIFT-P -> Preferences: Open Keyboard Shortcuts File。 另外一个不错的资源:https://code.visualstudio.com/docs/getstarted/keybindings - derFunk
显示剩余33条评论

627

26
`在任何键盘上的位置是什么? - Ewoks
24
Esc键正下方 :) - Rahul Shukla
12
谢谢。我需要的是Ctrl + 1,因为在某些情况下,Ctrl + `会打开外部终端,无法再次使用它回到VSCode编辑器。 - Thang Nguyen
4
“Control + '~'”可用于在两者之间切换。我已经使用它相当长的时间了。 - surender pal
6
@surenderpal ctrl+'~'键可以创建一个新的终端,但不会切换到已有的终端。 - Kajsa Gauza
显示剩余9条评论

217

Ctrl+J 可以使用;但也可以显示/隐藏控制台。

cmd+J 是Mac的快捷键。


34
在 MacOS 上,按下 Cmd+J。 - Miscreant
4
在Ubuntu Linux 16.04(Xenial)和VSC 1.45.0中无法工作。 - Aldo Bassanini
2
你也可以使用已接受答案中的相同技巧来为cmd+j设置快捷键:{ "key": "cmd+j", "command": "workbench.action.terminal.focus"}, { "key": "cmd+j", "command": "workbench.action.focusActiveEditorGroup", "when": "terminalFocus"}这样我就不必将手从Home Row上移开了。 - Clintm
@AldoBassanini 可在 Ubuntu 21.04 + VSC 1.57.0 上运行。 - Joep
2
不知道这个存在,否则我就不会尝试上面的示例了,这应该是被接受的答案(MacOS 12.0.1)。 - JVGD
你也可以按两次 Cmd+J 来聚焦编辑器,而不是使用奇怪的手指瑜伽 Ctrl+1 - sFritsch09

79

我有点晚了,但我已经按照以下方式在keybindings.json中进行了配置:

{
    "key": "ctrl+`",
    "command": "workbench.action.terminal.focus",
    "when": "editorTextFocus"
},
{
    "key": "ctrl+`",
    "command": "workbench.action.focusActiveEditorGroup",
    "when": "terminalFocus"
},
{
    "key": "alt+`",
    "command": "workbench.action.terminal.toggleTerminal"
}

我希望有单独的按键来打开/关闭终端和在窗口之间切换焦点。


6
`alt+``键映射似乎存在问题 - 在 https://github.com/Microsoft/vscode/issues/41024#issuecomment-363096692 中有跟踪记录。 - Ben Creasy
3
在我的设置中,我发现按alt键比按ctrl键更容易,因此它们的功能被调换了。 - xji
这是一个很好的建议,尽管我选择保留原始绑定并使用alt来切换焦点。 - Mr. Duhart
@BenCreasy 这只适用于 macOS,在 Windows 上这个很好用。 - Kotauskas

36

从版本1.26.1(linux)开始,默认未设置快捷方式。

设置快捷键的步骤如下:

  1. 打开键盘快捷键面板[ctrl + k,ctrl + s]
  2. 搜索 Focus Terminal

输入图像描述

  1. 设置您的快捷方式

对于编辑器,焦点已默认设置。

输入图像描述


由于它们提供了额外的键盘映射,因此这个答案更简单和更快。 - LookAheadAtYourTypes
这会将焦点放在第一个编辑器组上 - 这可能不是 OP 想要的。可能想要当前/活动的编辑器组。 - Mark
1
这是针对2020年及其后版本号大于等于1.45.0的答案。 - chrismarx
太好了。感谢您在这里的清晰表述。 - Fiddy Bux

27
另一种选择是使用 F6shift+F6F6 做的是“聚焦下一个部分”,这将使焦点从编辑器移动到下面的面板(终端、输出、调试控制台等)。 shift+F6 做的是“聚焦上一个部分”,这将使焦点从终端面板返回到编辑器。
相比于ctrl + `,这种方法的优点在于:
1. 它不会隐藏终端/面板(如果您喜欢。如果您喜欢隐藏/显示终端,则只需使用 ctrl + `)。
2. 这将适用于任何面板(终端、输出、调试控制台等)。

25

因为我觉得按下ctrl+` 有点困难,所以我将我的配置设置成如下。

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

我还配置了以下内容,以在编辑器组之间移动。

{
  "key": "ctrl+h",
  "command": "workbench.action.focusPreviousGroup",
  "when": "!terminalFocus"
},
{
  "key": "ctrl+l",
  "command": "workbench.action.focusNextGroup",
  "when": "!terminalFocus"
}

顺便说一下,我在 Mac 上通过 系统偏好设置 => 键盘 => 修改键Caps Lock 配置为 ctrl


14

嗨,让这个工作的步骤如下:

  1. ctrl + shift+ p 并查找 preferences: keyboard shortcuts

或者您可以使用 ctrl k + ctrl s 直接打开它

  1. 在搜索框中查找 Terminal: Focus Terminal,我为自己设置了 alt + T alt + T,但您可以选择您想要的组合

  2. 在搜索框中查找 View: Focus Active Editor Group,为自己设置了 alt + E alt + E,但同样您可以选择您想要的组合

就是这样,希望这可以帮助到您


1
我将它与tmux的ctrl + a向下和ctrl + a向上进行了匹配,现在我可以像在tmux中一样工作...谢谢。 - Snehal Parmar

13

尝试使用ctrl + `来切换终端的可见性,从而切换焦点。


12

根据VS Code键盘快捷方式文档页面,“Ctrl+`”是切换集成终端的默认按键绑定。如果你不喜欢这个快捷键,可以通过在键绑定文件中添加类似以下内容来更改它:

{ "key": "ctrl+l", "command": "workbench.action.terminal.toggleTerminal" }

似乎没有默认的按键绑定来仅聚焦于底部面板。因此,如果您不想切换底部面板,则需要将类似以下内容添加到您的按键绑定文件中:

{ "key": "ctrl+t", "command": "workbench.action.focusPanel" }

完美的,谢谢!我正在寻找你提到的第二个答案。如果有人想知道将焦点放回编辑器的键盘快捷键,那就是:Command + 1(在Mac上)。 - Abhijeet
1
我认为 focusPanel 是针对一般区域(包括像“问题”、“输出”和“调试控制台”之类的内容)。还有一个特别针对集成终端的操作 workbench.action.terminal.focus - wgj
在Windows上,按下Ctrl + 1将使焦点回到编辑器,如果您使用Ctrl + 将焦点放在集成终端上。然后只需按下Ctrl + 1或来在编辑器和终端之间切换。 - john-g

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