在 Visual Studio 代码中,如果我在搜索小部件中,如何在不关闭小部件的情况下使转义键为编辑器提供焦点?

In Visual Studio code, if I'm in the search widget, how do I make the escape key give editor focus WITHOUT closing the widget?

有没有办法修改快捷方式,以便在查找小部件(红点)中按 escape 使编辑器(绿点)获得焦点而无需关闭查找小部件?

我自己做了一些研究,我想我必须为此做两个更改:

  1. 我必须将 escape 添加到为编辑器提供焦点的快捷方式。我找到了一个这样做的,名为 View: Focus Active Editor Group。可能有一个更适合我的快捷方式,我想知道它是什么。
  2. 我将不得不删除关闭搜索小部件的快捷方式,当它具有焦点并且您按下 escape 键时。

我对第二点完全迷失了。有一个名为 Search: Cancel Search 的快捷方式,这似乎是显而易见的选择,但它的“何时”列另有建议:listFocus && searchViewletVisible && !inputFocus && searchState != '0'

首先,我不知道listFocus是什么意思,the official documentation也不解释。其次,!inputFocus 似乎不是我要改变的场景。

第三,搜索 escape 快捷键很重要,因为它会关闭搜索对话框。幸运的是,我发现这可以通过在键盘快捷键搜索中输入 "escape" 来完成。我将此信息提供给其他人,因为他们可能需要了解此信息才能帮助我。


如果我在搜索小部件中按转义键,keyboard debugging 会显示:

[2022-05-06 04:03:00.883] [renderer1] [info] [KeybindingService]: / Received  keydown event - modifiers: [], code: Escape, keyCode: 27, key: Escape
[2022-05-06 04:03:00.883] [renderer1] [info] [KeybindingService]: | Converted keydown event - modifiers: [], code: Escape, keyCode: 9 ('Escape')
[2022-05-06 04:03:00.883] [renderer1] [info] [KeybindingService]: | Resolving Escape
[2022-05-06 04:03:00.883] [renderer1] [info] [KeybindingService]: \ From 52 keybinding entries, matched closeFindWidget, when: editorFocus && findWidgetVisible && !isComposing, source: built-in.

在您的 keybindings,json

中定义它

使用最后一个与键匹配且 when 的键绑定(从底部开始搜索)

{ "key": "escape",
  "command": "workbench.action.focusActiveEditorGroup",
  "when": "findInputFocussed && editorFocus || replaceInputFocussed && editorFocus"
}

when 子句看起来很奇怪,但那是因为你不能使用 ()