Реальное решение: заставить терминал выйти после этого!
Наконец-то увидел реальное решение этой проблемы (ну, немного хакерское), в этом ответе - по крайней мере, если вы используете Git Bash в качестве терминала по умолчанию.
Если вы добавите аргументы &&
и exit
в конфигурацию отладки, терминал отладки автоматически закроется после завершения вашей программы. Однако будьте осторожны, он немедленно закроет терминал и весь текст в нем (вам может потребоваться добавить «Нажмите любую клавишу, чтобы завершить программу» в конце вашего скрипта, чтобы дать вам время просмотреть любой текст или что-то в этом роде) .
Примечание. Это по-прежнему хак, и он не всегда работает. Если вы нажмете кнопки перезапуска или остановки на панели инструментов отладчика, этот метод будет сокращен.
&&
в основном говорит Bash остановиться и дождаться завершения задачи отладки, прежде чем продолжить с дополнительными командами, а затем exit
выполнится после завершения сеанса отладки, что закроет терминал.
Вы можете сделать это, открыв конфигурацию запуска/отладки следующим образом:
- Перейдите в окно «Выполнить» на боковой панели.
- Выберите конфигурацию запуска в раскрывающемся списке, затем нажмите шестеренку, чтобы открыть соответствующий файл
launch.json
в окне редактора.
![введите здесь описание изображения](https://i.stack.imgur.com/ILxfW.png)
- Добавьте строку для
args: ["&&", "exit"]
, как показано ниже, и УБЕДИТЕСЬ, ЧТО ВЫ ДОБАВИЛИ ЗАПЯТУЮ В КОНЦЕ СТРОКИ ВЫШЕ!!
запуск.json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": ["&&", "exit"]
}
]
}
ПРИМЕЧАНИЕ 1: комментарий к этому ответу означает, что вы можете попробовать "args": ["\n", "exit", "0"]
, если это не сработает. Вероятно, это связано с другим типом терминала (Windows Cmd Prompt, PowerShell, другой оболочкой Linux и т. д.).
ПРИМЕЧАНИЕ 2. Если вам нужно добавить другие аргументы, вы можете добавить их в виде строк перед аргументом && в списке. Элементы, размещенные ранее в списке, станут аргументами вашей фактической программы/скрипта.
Альтернативное (оригинальное) решение: используйте консоль отладки для вывода
После некоторых поисков я не могу определить, ожидается ли запуск нового терминала для каждой отладки, но есть обходной путь.
Настройте конфигурацию отладки для Python: Current File. На вкладке отладки вверху нажмите на значок шестеренки, чтобы открыть файл launch.json.
Примечание. Значок отладки ниже немного изменился, и эта вкладка теперь называется Run
вместо Debug
< /эм>
![введите здесь описание изображения](https://i.stack.imgur.com/8hNsP.png)
В launch.json измените параметр "console"
со значения по умолчанию "integratedTerminal"
на "internalConsole"
, как показано ниже:
{ "version": "0.2.0",
"configurations": [
{ "name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "internalConsole"
}
]
}
Это приведет к тому, что все выходные данные любого сеанса отладки будут происходить только в КОНСОЛИ ОТЛАДКИ, которая очищается и повторно используется в каждом сеансе, а не порождает новый интегрированный терминал в каждом сеансе.
Обратная сторона
В итоге я вернулся к встроенному терминалу для сценариев, ожидающих ввода данных пользователем с консоли, поскольку консоль отладки не допускает ввода данных пользователем.
В этом случае вам просто нужно постоянно удалять лишние сеансы отладки - немного боли.
person
LightCC
schedule
02.10.2019