Переключение фокуса между редактором и встроенным терминалом в Visual Studio Code

Кто-нибудь знает сочетание клавиш (Mac и Linux) для переключения фокуса между редактором и встроенным терминалом в Visual Studio Code?


person Abhijeet    schedule 14.03.2017    source источник
comment
ctrl + '' '' будет лучшим #-> Linux   -  person muthukumar selvaraj    schedule 24.01.2018
comment
ctrl + '' 'работает также в OS X без дополнительной привязки клавиш.   -  person nataliastanko    schedule 05.02.2019
comment
ctrl + '`' тоже безупречно работает с Windows!   -  person Ehtesham Z    schedule 14.01.2020
comment
alt + up/down left/right arrows для переключения между разделенными терминалами   -  person Gabriel Petersson    schedule 16.07.2020
comment
Проблема с _1 _ + _ 2_ в том, что он создает новый терминал, даже если он уже существует.   -  person Guss    schedule 23.08.2020
comment
@Guss больше нет (v1.55.0)   -  person danno    schedule 26.04.2021
comment
похоже сейчас CTRL + '. работает у меня на окнах   -  person Pere    schedule 21.07.2021


Ответы (19)


Несмотря на то, что для VS Code существует множество модальных переключателей и ярлыков навигации, нет ни одного, специально предназначенного для «перехода от редактора к терминалу и обратно». Однако вы можете составить два шага, перегрузив key и используя предложение when < / а>.

Откройте файл 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"}

С помощью этих ярлыков я буду переключаться между редактором и интегрированным терминалом, используя одно и то же нажатие клавиши.

person wgj    schedule 25.03.2017
comment
Безусловно, это лучший ответ, поскольку это наиболее эргономически оправданное решение: расширение существующей привязки клавиш. Престижность! - person mloskot; 25.05.2017
comment
Спасибо, это сработало и сэкономило много времени. Для пользователей международных клавиатур: "ctrl+`" можно указать как "ctrl+oem_3". - person esel; 09.10.2017
comment
@wgj, я думаю, VS Code делает это по умолчанию, по крайней мере, сейчас (с последним обновлением). Или я что-то упускаю? - person Roman; 17.11.2017
comment
Поведение @Roman 1.18.0, безусловно, улучшилось с тех пор, как я написал свой ответ, но я думаю, что приведенное выше все еще лучше. Разница в том, что при нажатии клавиши терминал не исчезнет, ​​сместится только фокус. Мне нравится, когда мой терминал отображается :) - person wgj; 19.11.2017
comment
@wgj это правда. На самом деле будет использовать ваш путь вместо значения по умолчанию :) - person Roman; 20.11.2017
comment
А если вы хотите закрыть терминал, используйте команду exit, тогда вам даже не нужно все время прикасаться к мыши :) - person konekoya; 12.12.2017
comment
Обратите внимание, что эти ярлыки следует вставить в файл keybindings.json. - person pseudomarvin; 23.03.2018
comment
Для японских клавиатур может быть полезно использовать "ctrl+shift+oem_3" вместо "ctrl+`". "ctrl+shift+oem_3" означает "ctrl+shift+@", что эквивалентно "ctrl+`" на японской клавиатуре. - person nekketsuuu; 23.08.2018
comment
Для турецкой клавиатуры ctrl+oem_3 - person uzay95; 25.10.2018
comment
Это должно быть поведение по умолчанию, я пытался работать без него, но в конце концов использовал его снова. И поскольку я ранее проголосовал за этот ответ, на этот раз я оставляю комментарий. - person Emilio Bool; 08.01.2019
comment
Мне нужно было добавить предложение when для обеих привязок: { "key": "ctrl+$", "command": "workbench.action.terminal.focus", "when": "!terminalFocus"}, { "key": "ctrl+$", "command": "workbench.action.focusActiveEditorGroup", "when": "terminalFocus"} - person MonsieurDart; 18.09.2019
comment
Этому ответу как будто 2 года: люди VS Code, почему вы еще не встроили его? ;) - person machineghost; 09.10.2019
comment
Нажатие ctrl + `в terminalFocus используется для переключения видимости терминала (панели). После этой модификации вы можете сделать это с помощью ctrl + j. - person Thanasis Mattas; 23.12.2019
comment
Я, должно быть, делаю что-то не так, но когда я нахожусь в окне терминала, ctrl+` возвращает фокус редактору, но закрывает терминал. Есть ли способ оставить терминал открытым? - person chizou; 19.04.2020
comment
@majikman Похоже, вам нужно сделать то, что описано в этом ответе, и отредактировать файл сочетаний клавиш. - person KevinVictor; 19.05.2020
comment
Последняя версия (по состоянию на 10 июня 2020 г.) кода не позволяет редактировать файл keybindings.json (только для чтения). Вам нужно будет найти этот файл и отредактировать его с помощью внешнего редактора. - person La Machine; 10.06.2020
comment
Теперь это встроено в VSC! Таким образом, вам нужно знать только комбинации кнопок, которые объясняются в ответе Рахула Шуклы. - person Nander Speerstra; 16.07.2020
comment
@NanderSpeerstra Вы могли бы сделать то, что предложил Рахул в то время, когда был предоставлен этот ответ. Вместо этого в этом ответе основное внимание уделяется использованию того же нажатия клавиши для отображения и скрытия терминала. :) - person wgj; 17.07.2020
comment
На французском azerty мне нужно было решение @MonsieurDart, чтобы это работало, добавив! TerminalFocus к привязке терминала. В противном случае он каким-то образом останется сфокусированным в терминале. - person Eric Burel; 22.07.2020
comment
@LaMachine Еще есть способ определить собственные ярлыки. Если вы нажмете (cmd + s cmd + k), откроется страница сочетаний клавиш. Затем, если вы посмотрите вверх в правом верхнем углу, вы увидите значок, который выглядит как страница со стрелкой. Если вы наведете на него курсор, появится надпись Open Keyboard Shortcuts (JSON). Щелкните по нему, и вы сможете добавить новые ярлыки или переопределить ярлыки, подобные тем, что были представлены здесь. В macOS этот файл находится по адресу /Users/{user}/Library/Application Support/Code/User/keybindings.json. Не уверен ни в какой другой ОС - person mkturner; 04.08.2020
comment
На самом деле я вошел в систему, чтобы выразить вам уважение, которого вы заслуживаете за этот ответ. Я ненавижу пользоваться мышью, когда мне это не нужно. Еще раз спасибо за публикацию этого ответа. - person ju.skinner; 05.08.2020
comment
ctrl + j работает как ctrl + `. Поэтому я установил ctrl + j для фокуса и оставил ctrl + `, чтобы показать / скрыть панель. - person Reza Taba; 28.09.2020
comment
Если вы отсортируете свои сочетания клавиш, как я только что сделал, обратите внимание, что одна с when должна идти после без. - person Denis Howe; 13.10.2020
comment
Блестяще. Жалко, что у людей с Visual Code не было специального ярлыка для этого. Люди, которые не хотят использовать мышь или трекпад, найдут ваше решение полезным - person BaskarA; 18.10.2020
comment
Я не настраивал свой код vs для этого ярлыка, и когда я хотел его настроить, он уже был там. Поэтому, если вы используете обновленную версию, вы должны увидеть, что она уже установлена ​​по умолчанию с этими привязками клавиш. - person Khandakar Rashed Hassan; 11.01.2021
comment
Если это еще не так, это определенно должно быть поведением по умолчанию для VSCode ... - person Spcogg the second; 17.02.2021
comment
Я использую несколько разных очень эргономичных клавиатур (например, Kinesis Advantage с раскладкой Dvorak и EngoDox EZ), а ctrl + `- это не то, что легко достать. Но я обнаружил, что shift + space доступен и работает очень хорошо. - person Cameron Kerr; 08.04.2021
comment
@CameronKerr Сейчас я использую Kinesis с Colemak и больше не могу продвигать (хех) мое собственное предложение. Черт возьми, я даже больше не использую VS Code! - person wgj; 10.04.2021
comment
У меня работает с клавишей ctrl на Mac. Но когда я пытаюсь применить его к cmd + " instead of "ctrl+, это не работает. Кто угодно? - person Claud H; 21.04.2021
comment
Престижность, спасибо за это решение! - person Daniel Kaczmarczyk; 27.04.2021
comment
Это отличный @wgj, большое вам спасибо за это. Отлично работает! - person Vaclav Vlcek; 17.05.2021
comment
Добро пожаловать, @VaclavVlcek! - person wgj; 18.05.2021
comment
Замечательно элегантное решение - спасибо! - person whytheq; 05.07.2021

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/ < / а>

person Rahul Shukla    schedule 14.03.2019
comment
где находится `на любой клавиатуре ???? - person Ewoks; 27.04.2019
comment
чуть ниже клавиши esc :) - person Rahul Shukla; 28.04.2019
comment
Спасибо. Ctrl + 1 - это то, что мне нужно, так как в некоторых случаях ctrl + `откроет внешний терминал и не сможет использовать его снова, чтобы вернуться в редактор VSCode - person Thang Nguyen; 23.05.2019
comment
Control + '~' будет работать для переключения между ними. Пользуюсь с давних пор. - person surender pal; 31.07.2019
comment
Это очень полезно, если вы только что просмотрели все ссылки и хотите переместить фокус с боковой панели в редактор, не закрывая при этом боковую панель. Я имею в виду, что Ctrl + `работает, но это работает для разных случаев (например, у меня), я дважды нажимал ctrl +`, чтобы попасть туда, куда я хотел, на боковой панели. - person Rafael Merlin; 30.10.2019
comment
@surenderpal ctrl + '~' создает новый терминал, он не переключает фокус на существующий. - person Kasia Gauza; 16.01.2020
comment
спасибо, очень сложно увидеть обратную кавычку в раскрывающемся меню vscode. конечно, разработчики MSFT, работающие над 40 мониторами, не осознают этого - person Max Wen; 24.02.2020
comment
У меня есть клавиатура, на которой кнопка ½§ расположена под клавишей Esc. Кроме того, слева от символа возврата есть клавиша, содержащая символы "и". - person jeppoo1; 28.02.2020
comment
Это _1 _ + _ 2_ на macOS - person Tillus; 29.06.2020
comment
Мне нравится обнаруживать встроенные привязки клавиш. Очень просто и ключи находятся рядом. - person Gilbert; 06.07.2020
comment
Работал для меня над VS Code (на Ubuntu) без дополнительной привязки клавиш. - person Abinash Dash; 29.07.2020
comment
Обратите внимание, что фактические имена команд (для поиска в сочетаниях клавиш): Terminal: Focus Terminal и View: Focus First Editor Group. - person studgeek; 07.11.2020

Ctrl + J работает; но также показывает / скрывает консоль.

person joshua wray    schedule 22.03.2018
comment
Cmd + J в MacOS. - person Miscreant; 20.04.2019
comment
Не работает в Ubuntu Linux 16.04 (Xenial) + VSC 1.45.0 - person Aldo Bassanini; 21.05.2020
comment
Вы можете использовать тот же прием из принятого ответа, а также для cmd + j { "key": "cmd+j", "command": "workbench.action.terminal.focus"}, { "key": "cmd+j", "command": "workbench.action.focusActiveEditorGroup", "when": "terminalFocus"}. Таким образом, мне не нужно отрывать руки от домашнего ряда. - person Clintm; 15.02.2021
comment
@AldoBassanini работает на Ubuntu 21.04 + VSC 1.57.0 - person Joep; 14.06.2021

Немного поздно в игре, но я настроил свой в 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"
}

Мне нужны отдельные клавиши для открытия / закрытия терминала и переключения фокуса между окнами.

person schmudu    schedule 12.09.2017
comment
Отображение alt+` кажется ошибочным - отслеживается на github.com/Microsoft/vscode/issues / 41024 # issuecomment-363096692 - person Ben Creasy; 10.03.2018
comment
Я обнаружил, что нажимать alt легче, чем ctrl, поэтому в моей конфигурации все наоборот. - person xji; 09.10.2018
comment
Это отличное предложение, хотя я предпочел сохранить исходные привязки и использовать alt для переключения фокуса. - person Mr. Duhart; 03.01.2019
comment
@BenCreasy Это только для macOS, в Windows это прекрасно работает. - person Kotauskas; 01.08.2019

Начиная с версии: 1.26.1 (linux), ярлык не установлен по умолчанию. Чтобы установить ярлык

  1. открыть панель быстрых клавиш [ctrl + k, ctrl + s]
  2. Найдите Focus Terminal

введите описание изображения здесь

  1. Установите свой ярлык

Для редактора фокус уже установлен по умолчанию.

введите описание изображения здесь

person Shubham Jain    schedule 24.08.2018
comment
Поскольку они предоставляют дополнительные сопоставления клавиатуры, этот ответ проще и быстрее. - person LookAheadAtYourTypes; 24.10.2018
comment
Это фокусирует внимание на первой группе редакторов - возможно, это не то, что хочет OP. Наверное, хочет текущую / активную группу редакторов. - person Mark; 27.01.2020
comment
Это ответ на 2020 год и что угодно ›= 1.45.0 - person chrismarx; 14.05.2020
comment
Большой. Спасибо за ясность здесь. - person Fiddy Bux; 17.05.2020

Я настроил свой следующим образом, так как обнаружил, что 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"
}

Кстати, я настроил Caps Lock на ctrl на Mac из System Preferences => keyboard =>Modifier Keys.

person Sam Xu    schedule 27.09.2017

Привязка клавиш по умолчанию для переключения встроенного терминала - Ctrl + `в соответствии с сочетаниями клавиш VS Code документация страница. Если вам не нравится этот ярлык, вы можете изменить его в файле привязки клавиш, добавив что-то похожее на:

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

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

{ "key": "ctrl+t", "command": "workbench.action.focusPanel" }
person alexriedl    schedule 14.03.2017
comment
Отлично, спасибо! Я ищу второй ответ, который вы упомянули. Если кому-то интересно сочетание клавиш для возврата фокуса в редактор, то это: Command + 1 (на Mac). - person Abhijeet; 15.03.2017
comment
Я думаю, focusPanel предназначен для общей области (включая такие вещи, как Проблемы, Вывод и Консоль отладки. Также есть действие, специально предназначенное для Интегрированного Терминала workbench.action.terminal.focus. - person wgj; 25.03.2017

Как правило, 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"
    }
]
person Felipe Pereira    schedule 03.01.2020
comment
Блестяще! Это должен быть не только принятый ответ, но, IMHO, также значение по умолчанию для VSCode :) - person Boaz - CorporateShillExchange; 02.06.2021

Попробуйте использовать ctrl + ` для переключения видимости терминала и, как следствие, переключения фокуса.

person Gaurav Grover    schedule 28.06.2018

Привет, мои шаги по выполнению этой работы были:

  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, но опять же вы можете выбрать нужную вам комбинацию

Вот и все, я надеюсь, что это поможет

person Jheison Rodriguez    schedule 13.02.2021

Ответ Шубхама Джайна - лучший вариант, теперь использующий встроенные сочетания клавиш.

Я сопоставил  введите здесь описание изображения

на Ctrl + ;

и переназначил  введите здесь описание изображения

на Ctrl + L

Таким образом, вы можете перемещать фокус между терминалом и редактором и переключать терминал в непосредственной близости.

person jim    schedule 07.11.2018
comment
Это решило проблему для меня! Сочетания клавиш - ›Терминал: терминал фокусировки (workbench.action.terminal.focus) -› изменена привязка клавиш желаемой мной комбинации. Работает на vscode Insiders 1.43.0 - person jeppoo1; 28.02.2020

Это не совсем то, о чем спрашивают, но я нашел это очень полезным и связанным.

Если кто-то хочет перейти с одного терминала на другой терминал, также открытый на интегрированной панели терминала 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"
  },
person robertovg    schedule 14.02.2018

Вот способ добавить собственную привязку клавиш для переключения фокуса.

  1. Откройте свой VSCode
  2. Нажмите Ctrl+Shift+P, найдите сочетания клавиш и нажмите это (Настройки: Открыть сочетания клавиш).
  3. Найдите «фокус терминала» на панели поиска и найдите эту опцию (Терминал: сфокусировать на представлении терминала) и щелкните значок плюса.

введите описание изображения здесь

  1. Введите ярлык, который вам нравится, который не используется, и нажмите Enter.
  2. Перейдите в режим редактора и попробуйте использовать ярлык.
  3. Теперь нажмите Alt+Shift+T, чтобы перейти к терминалу.
  4. Хотите вернуться в редактор? Просто ударь Ctrl+tab

Протестировано на компьютере с Windows 10 с VSCode (1.52.1)

person ZingAju    schedule 28.12.2020

ПРОСТОЕ РЕШЕНИЕ ДЛЯ WINDOWS ДЛЯ ЛЮБОЙ РАСПОЛОЖЕНИЯ КЛАВИАТУРЫ (может работать для других ОС, но не тестировалось)

Я использую финскую клавиатуру, поэтому ничего из вышеперечисленного не помогло, но это должно работать для всех клавиатур.

  • Фокус терминала: Наведите указатель мыши на текст терминала во встроенном терминале. Появится ярлык для фокусировки на терминале - например, мой сказал CTRL + ö.
  • Фокус редактора: как упоминалось выше, используйте CTRL + 1.
person JStrahl    schedule 02.03.2020
comment
Спасибо Спасибо спасибо! Так просто, и так легко не заметить. Это, безусловно, лучший ответ здесь. - person Terje Mikal; 17.03.2021

Собственно, в VS Code 1.48.1 есть команда toggleTerminal; Не знаю, был ли он доступен в предыдущих версиях;) Вы можете использовать его в файле keybindings.json.

Это сработало для меня в Windows, а также должно работать в Linux.

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

Вот мой подход, который обеспечивает последовательный способ навигации между активными терминалами, а также переключение между панелями терминала и редактора без закрытия окна терминала. Вы можете попробовать добавить это в свой keybindings.json напрямую, но я бы порекомендовал вам пройти через интерфейс привязки клавиш (cmd+K cmd+S на Mac), чтобы вы могли просматривать / управлять конфликтами и т. Д.

Благодаря этому я могу использовать ctrl+x <arrow direction> для перехода к любому видимому редактору или терминалу. Как только курсор окажется в секции терминала, вы можете использовать ctrl+x ctrl+up или ctrl+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"
    },
person totalhack    schedule 17.07.2020

Я сделал это, перейдя в настройку> Сочетания клавиш, затем в разделе, где он дает терминал фокуса типа панели поиска, и выбираю опцию. Он попросит ввести комбинацию, которую вы хотите установить для этого действия. Сделай это. Что касается фокуса редактора, введите «фокус редактора» в строке поиска и введите желаемый ключ. ЕСЛИ вы отлично добавите ключ. его можно удалить, отредактировав Джейсона, как указано в комментариях выше

person Mahad Ali    schedule 01.08.2018

control + '~' будет работать для переключения между ними. а '`' находится прямо над кнопкой табуляции. Этот ярлык работает только на Mac.

person surender pal    schedule 31.07.2019

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: Для переключения с терминала на редактор.

person Naman Jain    schedule 22.07.2021