使用键盘在VS Code中跳转到当前调试位置

22
在VS Code中,我如何跳转到调试器的当前位置?它由一条带黄色的线表示,但是我容易在浏览其他文件和函数时迷失方向,只有在努力寻找当前暂停调试会话的位置时才能回到这里。
应该很简单,但我在文档中找不到任何内容。我甚至查看了包含“debug”关键词的所有操作,但没有找到我要找的内容。
5个回答

29

@最新的VSCode更新答案:

导航到调用堆栈顶部

在最新的VSCode(1.71+)中,有一个导航到调用堆栈顶部命令(workbench.action.debug.callStackTop)。您可以在键盘快捷键菜单中简单地为其分配一个快捷键。

--> 由CoderBlue指出,请在那里点个赞 :)

之前针对VSCode < 1.71的原始答案:

所需效果(跳转到当前执行点)可以通过点击“调用堆栈”视图中最顶部的条目(或使用键盘选择)来实现。

使用multi-command宏扩展程序(受Mark的回答启发),可以创建一个自定义命令,该命令将始终选择调用堆栈视图中最顶部的条目。

这会进入您的keybindings.json

{
    "key": "cmd+f4",
    // Go to current debugging position
    "command": "extension.multiCommand.execute",
    "args": {
      "sequence": [
        "workbench.debug.action.focusCallStackView",
        "list.clear",
        "list.focusFirst",
        "list.select"
        // optional, to focus your editor:
        // workbench.files.action.focusOpenEditorsView
      ]
    }
},

我得到了 command 'extension.multiCommand.execute' not found 的错误提示,所以可能需要查看Mark的答案并将代码添加到 settings.json 中。 - Timo
1
@Timo 为了确保,你已经安装了这个扩展吗? - panepeter
现在使用最新的VS Code版本已经不需要这个了。请查看VonC和我的回答 - 只需将键盘快捷方式添加到调用堆栈顶部即可。 - CoderBlue
@CoderBlue,感谢您指出这一点。我已经更新了答案以反映更为现代化的方式。 - panepeter

6

快速添加键盘快捷键在VS Code中跳转到当前调试位置

VonC的回答的基础上,特别是使用当前版本的VS Code,即1.71.0:

  1. 输入 ctrl-k ctrl-s 进入到键盘快捷键设置。

  2. 在搜索框中输入“callstack”,找到“导航到调用堆栈顶部”。

  3. 设置快捷键绑定,例如我使用 ctrl-r d

enter image description here

  1. 尝试一下!现在当我按下 ctrl-r d 时就可以到达目标了!

不错!应该可以了。点赞。 - VonC

4

目前看起来没有“转到当前断点”命令,只有上一个和下一个命令。

不过,我认为这个“bug”可能会有用:请参见repl evaluation causes editor to jump to current breakpoint

所以你可以只专注于 REPL,然后按Enter键,就可以跳转到当前的断点。这样做会在你的调试控制台中添加一个undefined结果,但也许这是可以接受的。

或者你可以为一个执行焦点命令并一次性清除调试控制台的宏分配一个按键绑定。使用你选择的宏扩展程序(我正在使用下面的multi-command),将以下内容放入你的设置中:

"multiCommand.commands": [

 {
  "command": "multiCommand.gotoCurrentBreakpoint",
  // "interval": 350,
  "sequence": [

    "workbench.debug.action.focusRepl",
    "repl.action.acceptInput",

    // following command clears the debug console if you wish
    "workbench.debug.panel.action.clearReplAction"
  ]
 }
]

还有一些关键绑定:

{
  "key": "alt+/",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.gotoCurrentBreakpoint" },
},

演示如何返回当前断点

这个“bug”会存在多久,以供使用……?


非常感谢您的深入挖掘!通过阅读您提供的错误票证,我实际上偶然发现了一个更直接的解决方案,这种方法很明显,但在那之前我没有注意到(我会将其发布为答案)。同时,感谢您提到的宏扩展 - 这肯定会派上用场! - panepeter
在 vscode 中,使用 Alt+/ 快捷键时,首先会检查按键绑定,然后再检查设置中的序列?为什么不把所有代码都放在按键绑定中呢? - Timo
1
@Timo 在回答时,多命令不支持仅使用一个键绑定来执行所有命令。这是扩展的最新更新。 - Mark

2
所需效果(跳转到当前执行点)可以通过点击“调用堆栈”视图中最上面的条目(或使用键盘选择)来实现。
“使用键盘选择”现在已经在VSCode 1.70(2022年7月)中实现,并且问题149975(“添加按键绑定命令以在调试时导航调用堆栈(无需鼠标)”)已经得到解决。
请参见PR 154117commit 3d3bfce
“导航调用堆栈的命令” 添加了导航调用堆栈的命令。 用户可以手动添加快捷键绑定。 引入了新的命令(仅在调试停止时可用): - “Debug: Navigate to Top of Call Stack”(导航到调用堆栈顶部) - “Debug: Navigate to Bottom of Call Stack”(导航到调用堆栈底部) - “Debug: Navigate Up Call Stack”(向上导航调用堆栈) - “Debug: Navigate Down Call Stack”(向下导航调用堆栈)
因此,您可以轻松地将快捷键与“Navigate to Top of Call Stack”相关联,该命令是“我的调试会话当前暂停的位置”。 这个功能现在可以在VSCode insiders中使用。

0
“^” + “-” 对于 Mac 用户在编辑器中可以回到前一个位置,我不确定在调试窗口是否相同。

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