В коде Visual Studio, если я нахожусь в виджете поиска, как сделать, чтобы клавиша escape давала фокус редактору БЕЗ закрытия виджета?

В коде Visual Studio, если я нахожусь в виджете поиска, как сделать, чтобы клавиша escape давала фокус редактору БЕЗ закрытия виджета?

Есть ли способ изменить ярлыки, чтобы нажатие escape в виджете поиска (красная точка) давало фокус редактору (зеленая точка), не закрывая виджет поиска?

Я провел небольшое исследование самостоятельно, и я думаю, что мне придется внести два изменения для этого:

  1. Мне придется добавить escape к ярлыку, который дает фокус редактору. Я нашел один, который делает это, по имени View: Focus Active Editor Group. Вероятно, вместо этого я мог бы использовать более подходящий ярлык, и я хотел бы знать, что это такое.
  2. Мне придется удалить ярлык, который закрывает виджет поиска, когда он находится в фокусе, и вы нажимаете клавишу escape.

Я совершенно потерял на второй пункт. Есть ярлык под названием Search: Cancel Search, который кажется очевидным выбором, но колонка «когда» предполагает обратное: listFocus && searchViewletVisible && !inputFocus && searchState != '0'

Во-первых, я не знаю, что означает listFocus, и официальная документация не объясняет. Во-вторых, !inputFocus не похоже на сценарий, который я пытаюсь изменить.

В-третьих, поиск сочетаний клавиш escape нетривиален, так как он закрывает диалоговое окно поиска. К счастью, я сообразил, что это можно сделать с помощью печатание"escape" в поиск по сочетанию клавиш. Я предоставляю эту информацию другим, потому что им может понадобиться знать это, чтобы помочь мне.


Если я нажму escape в виджете поиска, отладка клавиатуры скажет:

[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.
Search: Cancel Search выглядит как побег, когда у вас открыта панель поиска и вы ищете в файлах.
rioV8 06.05.2022 12:25

@rioV8 Я думал, что это может быть так, но я не понимал, почему это будет ожидатьlistFocus и !inputFocus, если это так.

Daniel Kaplan 06.05.2022 12:32
inputFocus — это когда у вас есть поле ввода, такое как QuickPick или InputBox вверху, если у вас есть список с фокусом, например проводник, это listFocus Я думаю
rioV8 06.05.2022 12:36

вместо Esc вы всегда можете использовать Ctrl+1 или Ctrl+2,..., Ctrl+9

rioV8 06.05.2022 12:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Определите это в своем keybindings,json

Используется последняя привязка клавиш, которая соответствует клавише и when (поиск осуществляется снизу)

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

Предложение when выглядит странно, но это потому, что вы не можете использовать ().

хорошо, так как я не могу использовать (), что это говорит? (editorTextFocus && findInputFocussed) || (editorTextFocus && replaceInputFocussed)? Кроме того, Focussed это опечатка?

Daniel Kaplan 06.05.2022 12:34

@DanielKaplan Если фокус находится в одном из полей ввода диалогового окна поиска, предложение when имеет значение True. нет опечатки, это переменная контекста, которая используется в привязках клавиш по умолчанию, да && имеет более высокий приоритет, чем ||, они сначала разбивают строку на ||

rioV8 06.05.2022 12:38

Я поместил это внизу моего keybindings,json [так в оригинале], но когда я нажимаю escape, он все равно закрывает виджет.

Daniel Kaplan 06.05.2022 12:46

@DanielKaplan, вы пробовали отладка привязки клавиш, чтобы увидеть, выбрана ли эта привязка клавиш?

rioV8 06.05.2022 12:57

Спасибо за совет. Я обновил свой исходный пост, но я знаю, каким будет мой следующий шаг.

Daniel Kaplan 06.05.2022 13:05

@DanielKaplan посмотри мое редактирование, у меня оно работает, я использовал когда из стандартных привязок, но у тебя нет фокуса в редакторе И в findInput, может быть editorFocus лучше, editorTextFocus ложно, если курсор в диалоге поиска, я проверил , я неправильно прочитал это из графического интерфейса привязки клавиш, вы не можете копировать и вставлять, когда предложения

rioV8 06.05.2022 13:12

Добавляет ли findWidgetVisible что-нибудь к пункту when? Будет ли это не всегда верно, если findInputFocussed || replaceInputFocussed верно?

Mark 06.05.2022 18:21

@Mark да, я изменил ответ, чтобы использовать when, аналогичный привязкам по умолчанию.

rioV8 06.05.2022 19:47

Другие вопросы по теме