#visual-studio-code #editor #vscode-keybinding
Вопрос:
Я хочу createTerminalEditor
это сделать, если еще ничего не terminalEditor
открыто.
Примечание: я говорю о terminalEditor
том и не terminal
о том .
Итак, я ищу when
аргумент , в котором говорится что-то вроде editorAlreadyExists != terminalEditor
, точно так же, как есть activeEditor
строка из какого аса terminalEditor
.
Есть ли в любом случае способ достичь этого?
Вот activeEditor
пример для справки, но я хочу проверить, terminalEditor
существует ли он во всех уже открытых редакторах, а не только в activeEditor
.
{
"key": "ctrl `",
"command": "workbench.action.createTerminalEditor",
"when": "activeEditor != terminalEditor"
},
Ответ №1:
Я вижу, что есть when
пункт для:
terminalEditorFocus
: истина/ложь
что, похоже, не помогло бы, за исключением того факта, что его вообще нет в списке (через Developer: Inspect Context Keys
), когда редактор терминала не открыт. Поэтому я подумал, что, возможно, есть when
пункт о привязке ключей, который мог бы использовать это. Но я перепробовал все, что угодно, например, было ли оно пустым или неопределенным, или пустой строкой, или ни истинным, ни ложным и т. Д., Но ничего не сработало. Я думаю, что если ключа terminalEditorFocus
не существует, то в распознаватель привязки ключей вообще ничего не доставляется, и он всегда выходит из строя.
Вы можете подать запрос с просьбой о предоставлении определенного terminalEditorExists
вида when
предложения.
Будет другой способ. В настоящее время существует экспериментальный api для доступа ко всем открытым вкладкам. См.Предлагаемый api. Таким образом, вы можете написать расширение, которое проверяет все открытые вкладки и запускает workbench.action.createTerminalEditor
команду, если ни одна из них не является конечной. Он работает прямо сейчас в сборке Insiders, но когда он станет окончательным, я не знаю — сейчас он кажется довольно прочным. Проблема: API модели вкладки.
const tabs = vscode.window.tabs;
const openTerminalEditor = tabs.some(tab => tab.viewId === 'terminalEditor'); // true/false
Затем вы можете либо установить свой собственный контекстный ключ с setContext
помощью команды, либо запустить ее.