【问题标题】:Switch focus between editor and integrated terminal在 Visual Studio Code 中的编辑器和集成终端之间切换焦点
【发布时间】:2017-08-05 10:22:12
【问题描述】:

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

【问题讨论】:

  • ctrl + ' ` ' 将是最好的#-> Linux
  • ctrl + ' ` ' 也适用于 OS X,无需任何额外的键绑定。
  • ctrl + ' ` ' 在 Windows 上也能完美运行!
  • CTRL+` 的问题在于它会创建一个新的终端,即使它已经存在。
  • @Guss 不再 (v1.55.0)

标签: visual-studio-code


【解决方案1】:

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

从编辑器中打开 keybindings.json:CMD-SHIFT-P -> 首选项:打开键盘快捷键文件并添加以下条目:

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

通过这些快捷方式,我将使用相同的击键在编辑器和集成终端之间集中注意力。

【讨论】:

  • 到目前为止,这是最符合人体工程学的解决方案的最佳答案:扩展现有的键绑定。赞一个!
  • 谢谢,这很好,节省了很多时间。对于国际键盘用户:"ctrl+`" 可以指定为"ctrl+oem_3"
  • @Roman 1.18.0 的行为肯定是自我写答案以来的一种改进,但我认为上述情况仍然更好。不同的是使用按键时终端不会消失,只是焦点会移动。我碰巧喜欢显示我的终端:)
  • 请注意,这些快捷方式应粘贴到keybindings.json 文件中。
  • 从编辑器打开 keybindings.json:CMD-SHIFT-P -> Preferences: Open Keyboard Shortcuts File。也是一个不错的资源:@​​987654322@
【解决方案2】:

ctrl+`:专注于集成终端

ctrl+1 :专注于编辑器(如果 editor-2 命令为 ctrl+2)

更多信息:https://www.rscoder.com/2020/11/14/how-to-switch-focus-between-editor-and-integrated-terminal-in-visual-studio-code/

【讨论】:

  • 任何键盘上的`在哪里?
  • 就在 esc 键下面 :)
  • 谢谢。 Ctrl + 1 是我需要的,因为在某些情况下, ctrl+` 将打开外部终端并且无法再次使用它来返回 VSCode 编辑器
  • Control + '~' 将用于两者之间的切换。我已经使用了很长一段时间了。
  • @surenderpal ctrl+'~' 创建新终端,它不会将焦点切换到现有终端。
【解决方案3】:

Ctrl+J 有效;但也显示/隐藏控制台。

【讨论】:

  • MacOS 上的 Cmd+J。
  • 不适用于 Ubuntu Linux 16.04 (Xenial) + VSC 1.45.0
  • 您也可以对 cmd+j { "key": "cmd+j", "command": "workbench.action.terminal.focus"}, { "key": "cmd+j", "command": "workbench.action.focusActiveEditorGroup", "when": "terminalFocus"} 使用已接受答案中的相同技巧。这样我就不必把手从首页上移开。
  • @AldoBassanini 适用于 Ubuntu 21.04 + VSC 1.57.0
  • 不知道这个存在,否则我不会尝试上面的例子,这应该是公认的答案(MacOS 12.0.1)
【解决方案4】:

游戏有点晚了,但我在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"
}

我想要单独的键来打开/关闭终端和在窗口之间来回切换焦点。

【讨论】:

  • 映射 alt+` 似乎有问题 - 在 github.com/Microsoft/vscode/issues/41024#issuecomment-363096692 跟踪
  • 我发现altctrl 更容易按下,所以在我的配置中是相反的。
  • 这是一个很棒的提议,尽管我选择保留原始绑定并使用alt 来切换焦点。
  • @BenCreasy 这仅适用于 macOS,在 Windows 上可以正常工作。
【解决方案5】:

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

  1. 打开键盘快捷键面板 [ctrl + k , ctrl + s]
  2. 搜索对焦终端

  1. 设置快捷方式

默认情况下已经设置了编辑器焦点。

【讨论】:

  • 因为他们提供了额外的键盘映射,所以这个答案更简单更快
  • 这集中在第一个编辑组 - 可能不是 OP 想要的。可能想要当前/活动的编辑组。
  • 这是 2020 年的答案,任何 >= 1.45.0
  • 太棒了。感谢您在这里的清晰说明。
【解决方案6】:

我的配置如下,因为我发现 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上从System Preferences => keyboard =>Modifier Keys配置了Caps Lockctrl

【讨论】:

    【解决方案7】:

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

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

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

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

    【讨论】:

    • 完美,谢谢!我正在寻找你提到的第二个答案。如果有人想知道将焦点放回编辑器的键盘快捷键,那么它是:Command + 1(在 Mac 上)
    • 我认为focusPanel 是针对一般区域的(包括诸如“问题”、“输出”和“调试控制台”之类的内容。还有一个专门针对集成终端workbench.action.terminal.focus 的操作。跨度>
    【解决方案8】:

    一般情况下,VS Code 使用ctrl+j 打开终端,所以我创建了一个键绑定以使用ctrl+k 组合进行切换,如下图keybindings.json

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

    【讨论】:

    • 不完全是。默认情况下ctrl+j 只是切换面板。因此,如果最后使用的面板视图是例如“问题”你会跳到那里而不是终端。 ctrl+k 也被广泛用作和弦开头,因此覆盖它会破坏很多快捷方式。
    【解决方案9】:

    另一种选择是使用F6shift+F6

    F6 执行“Focus Next Part”,这会将焦点从编辑器转移到下面的Panel(终端、输出、调试控制台等)。

    shift+F6 执行“聚焦上一部分”,这会将焦点从终端面板移回编辑器。

    这比ctrl + ` 的优势在于:

    1. 它不会隐藏终端/面板(如果您喜欢这样。如果您喜欢隐藏/取消隐藏终端,那么只需使用ctrl + `)。

    2. 这适用于任何面板(终端、输出、调试控制台等)。

    【讨论】:

      【解决方案10】:

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

      【讨论】:

        【解决方案11】:

        嘿,我完成这项工作的步骤是:

        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,但您可以再次选择您想要的组合

        就是这样,希望对你有帮助

        【讨论】:

          【解决方案12】:

          这是一种添加您自己的键绑定以切换焦点的方法。

          1. 打开你的 VSCode
          2. Ctrl+Shift+P 并搜索键盘快捷键并点击它(首选项:打开键盘快捷键)。
          3. 在搜索面板中搜索“焦点终端”并找到此选项(终端:关注终端视图)并单击加号图标。

          1. 输入你喜欢的不使用的快捷方式并回车。
          2. 进入编辑器模式并尝试使用您的快捷方式。
          3. 现在点击Alt+Shift+T 转到终端。
          4. 想回到编辑器?只需点击Ctrl+tab

          使用 VSCode(1.52.1) 在 Windows 10 机器上测试

          【讨论】:

            【解决方案13】:

            适用于任何键盘布局的简单 WINDOWS 解决方案(可能适用于其他操作系统,但未经测试)

            我使用的是芬兰语键盘,所以上述方法都不起作用,但这应该适用于所有键盘。

            • 终端焦点:将鼠标悬停在集成终端中的终端文本上。专注于终端的快捷方式将弹出 - 例如我的说 CTRL+ö。
            • 编辑器焦点:如上所述,使用 CTRL+1。

            【讨论】:

            • 谢谢谢谢谢谢!如此简单,如此容易被忽视。这是迄今为止最好的答案。
            【解决方案14】:

            这不是所要求的,但我发现它非常有用且相关。

            如果有人想从一个终端切换到另一个终端也可以在Visual Studio的集成终端面板中打开,可以搜索:

            Terminal: Focus Next Terminal

            或添加以下快捷键,使用键盘组合更快。

              {
                "key": "alt+cmd+right",
                "command": "workbench.action.terminal.focusNext",
                "when": "terminalFocus"
              },
              {
                "key": "alt+cmd+left",
                "command": "workbench.action.terminal.focusPrevious",
                "when": "terminalFocus"
              },
            

            【讨论】:

              【解决方案15】:

              Shubham Jain 的回答是现在使用内置键盘快捷键的最佳选择。

              我映射

              Ctrl + ;

              并重新映射

              Ctrl + L

              这样您可以在终端和编辑器之间移动焦点,并在终端之间切换。

              【讨论】:

              • 这为我解决了! 键盘快捷键 --> Terminal: Focus Terminal (workbench.action.terminal.focus) --> 改变了Keybinding 到我想要的组合。在 vscode Insiders 1.43.0 上运行
              【解决方案16】:

              其实在VS Code 1.48.1中,有一个toggleTerminal命令;我不知道它在以前的版本中是否可用;)您可以在keybindings.json 文件中使用它。

              这适用于我在 Windows 上,也应该适用于 Linux。

              {
                  "key": "ctrl+alt+right",
                  "command": "workbench.action.terminal.toggleTerminal",
                  "when": "editorTextFocus || terminalFocus"
              }
              

              【讨论】:

                【解决方案17】:

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

                有了这个,我可以使用ctrl+x <arrow direction> 导航到任何可见的编辑器或终端。光标位于终端部分后,您可以使用 ctrl+x ctrl+upctrl+x ctrl+down 循环浏览活动终端。

                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"
                    },
                

                【讨论】:

                  【解决方案18】:

                  对于 ctrl+` 组合之间切换,我尝试了所有列出的答案,但没有运气。对于那些和我有类似问题的人,请尝试keybindings.json 中的以下快捷方式:Tested on VSCode 1.59+

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

                  【讨论】:

                  • 使用简单的反引号而不是 oem_8 就像 OSX 上的冠军一样。其余的规则都很好用!
                  【解决方案19】:

                  我的解决方案:

                  • 有一键
                  • 如果还没有终端:打开终端并关注它
                  • 如果焦点在终端上:隐藏面板并切换回编辑器
                  • 如果焦点在编辑器上并且有终端:取消隐藏终端窗格并关注它
                    {
                      "key": "ctrl+shift+alt+cmd+t",
                      "command": "workbench.action.terminal.new",
                      "when": "!terminalIsOpen"
                    },
                    {
                      "key": "ctrl+shift+alt+cmd+t",
                      "command": "terminal.focus",
                      "when": "terminalIsOpen && !terminalFocus"
                    },
                    {
                      "key": "ctrl+shift+alt+cmd+t",
                      "command": "workbench.action.closePanel",
                      "when": "terminalIsOpen && terminalFocus"
                    }
                  

                  【讨论】:

                  • 非常好用——对我来说没有“alt”——但它不会在“focused tree path”上打开——问)知道怎么做吗? ?
                  • 如果您不需要“alt”,我怀疑您使用的是非 macOS 计算机。当然,解决方案并不重要。 OP 没有要求打开“重点树路径”。我看到了两个挑战。 1) 命令不带参数。 2)打开的正确路径是什么?也许看看 VSCode 的 predefined variablesthe Multi-Command extension。让我知道你是否能正常工作?
                  • 我正在使用#macos :-) - 你知道我已经关注了一些我选择女巫箭头的树项目 - 然后“输入”正在重命名 - “cmd + 向下箭头”已打开 - 但想念我“在终端中打开该路径”,以便我可以为该文件运行命令
                  【解决方案20】:

                  100% 工作设置...

                  [
                      { "key": "alt+right", "command": "workbench.action.terminal.focus"},
                      { "key": "alt+left", "command": "workbench.action.focusActiveEditorGroup", "when": "terminalFocus"}   
                  ]
                  

                  workbench.action.terminal.focus : 从编辑器切换到 终端。 workbench.action.focusActiveEditorGroup : 切换 从终端到编辑器。

                  【讨论】:

                    【解决方案21】:

                    我通过设置>键盘快捷键然后在它提供搜索栏类型焦点终端的部分中选择该选项来做到这一点。它将要求输入您要为此操作设置的组合。去做吧。至于编辑器焦点类型“编辑器焦点”在搜索栏中输入您想要的键。如果您出色地添加了密钥。可以通过上面 cmets 中提到的编辑 jason 来删除它

                    【讨论】:

                      【解决方案22】:

                      control + '~' 将用于在两者之间切换。而“`”就在标签按钮的上方。 此快捷方式仅适用于 mac。

                      【讨论】:

                        【解决方案23】:

                        快捷键会根据键盘布局(QWERTY/QWERTZ/AZERTA 等)而变化

                        要找出您的快捷键,请按 Ctrl+Shift+P 并转到首选项:键盘快捷键。

                        从那里搜索 View:Toggle Terminal

                        【讨论】:

                          【解决方案24】:

                          ctrl + - 也可以,就是返回上一个光标位置

                          【讨论】:

                            猜你喜欢
                            • 2018-05-02
                            • 2010-12-19
                            • 1970-01-01
                            • 2018-07-04
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2020-06-07
                            • 2019-03-12
                            相关资源
                            最近更新 更多