Как избавиться от Терминал будет повторно использоваться задачами, нажмите любую клавишу, чтобы закрыть его. поведение?

После выполнения задачи (в данном случае — грузовой сборки) в терминале VSCode появляется следующее:

> Executing task: cargo build <

(output of the task here)

Terminal will be reused by tasks, press any key to close it.

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

Как остановить это поведение?

Как избавиться от первой и последней строк текста?


person A.B.    schedule 22.12.2017    source источник
comment
Я тоже думаю, как от него избавиться. Я использую функцию dependOn. На данный момент мне нужно перейти в консоль, чтобы несколько раз нажать любую клавишу.   -  person Antti    schedule 14.01.2018
comment
Та же проблема. Раньше у меня не было с ним проблем. Это зависит от версии или системы?   -  person cerebrou    schedule 15.02.2018
comment
Я хотел бы автоматически закрывать старый терминал при выполнении новой задачи. У меня есть студенты, которые читают старые сообщения об ошибках, потому что они предполагают, что все содержимое терминала создается заново после выполнения задачи.   -  person user2023370    schedule 11.03.2020


Ответы (5)


Чтобы было ясно, выполнение задачи всегда будет создавать новый интегрированный терминал в VS Code. Обойти это невозможно. Самое главное, чтобы вместо вновь созданного встроенного терминала отображался исходный терминал. (Мы хотим, чтобы исходный терминал был раскрыт.)

Решение @Gregory Cosmo Haun подавляет сообщение «Терминал будет повторно использоваться задачами, нажмите любую клавишу, чтобы закрыть его». Однако он по-прежнему показывает новый интегрированный терминал вместо обычного терминала. (поэтому вам все равно нужно нажать «любую клавишу», чтобы закрыть этот терминал и открыть исходный терминал)

Лучшим решением было бы установить "reveal": "silent", который все равно создаст новый интегрированный терминал, но не покажет его, если при выполнении вашей задачи не возникнет ошибка. Я также установил "clear": true (что необязательно), чтобы терминал очищался перед выполнением задачи. Я намеренно опускаю "showReuseMessage": false (это необязательно), но вы можете добавить его. Кого волнует, подавлена ​​подсказка или нет? Самое главное, что вновь созданный терминал не открывается, поэтому мне не нужно «нажимать любую клавишу», чтобы закрыть его.

"presentation": {
  "reveal": "silent",
  "clear": true
}

Кстати, вы также можете установить "reveal": "never", но обычно вы хотите видеть сообщение об ошибке, если есть проблема с выполнением вашей задачи.

На мой взгляд, это лучшее возможное решение. Да, новый встроенный терминал всегда будет создаваться при выполнении задачи, но, по крайней мере, он не будет показан (если не произойдет ошибка), и вы можете спокойно игнорировать его, не нажимая никаких клавиш, чтобы закрыть его.

person kimbaudi    schedule 05.08.2019

Появился новый вариант презентации под названием showReuseMessage. Добавьте следующее в определение задачи.

"presentation": {
     "showReuseMessage": false
}
person Gregory Cosmo Haun    schedule 30.10.2018
comment
Это отлично сработало для меня в VSCode-win32-x64-1.34.0. - person abelito; 27.05.2019
comment
Это буквально только скрывает сообщение Press any key to close the terminal.. Вам по-прежнему нужно нажать любую клавишу, чтобы увидеть свой терминал. - person rustyx; 12.07.2019
comment
Я согласен с @rustyx. Это может подавить сообщение, но вместо исходного терминала будет показан новый интегрированный терминал. Немного улучшенным решением было бы также установить "reveal": "silent". Таким образом, вам не нужно нажимать никакие клавиши. Пожалуйста, смотрите мой ответ. - person kimbaudi; 05.08.2019

Проверьте, может ли помочь новая функция из VSCode 1.57 (май 2021 г., 2,5 года после ОП):

Автоматически закрывать терминалы задач

Свойство задачи presentation имеет новое свойство close.
Установка close на true приведет к закрытию терминала при выходе из задачи.

{
  "type": "shell",
  "command": "node build/lib/preLaunch.js",
  "label": "Ensure Prelaunch Dependencies",
  "presentation": {
      "reveal": "silent",
      "close": true
  }
}
person VonC    schedule 07.06.2021

Альтернативное решение — настроить окно вывода на автофокусировку.

Добавьте это в определение задачи:

    "presentation": {
        "focus": true
    }

Тогда это уже не так раздражает, потому что вы можете закрыть вывод компилятора одним нажатием клавиши.

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

person rustyx    schedule 13.07.2019
comment
но это будет означать, что вам все равно придется нажимать любую клавишу, чтобы закрыть встроенный терминал, который открывается при запуске задачи. Я бы предпочел молча игнорировать подсказку, что можно сделать, установив "reveal": "silent" и "showReuseMessage": false - person kimbaudi; 05.08.2019
comment
Да, это решение, когда вы не хотите видеть результат задачи. - person rustyx; 05.08.2019
comment
Я думаю, что это следующая лучшая вещь (скрыть вывод задачи), поскольку невозможно предотвратить отображение вывода задачи. - person kimbaudi; 05.08.2019

Один из вариантов — добавить в «задачи» следующую команду:

"presentation": {
            "panel": "new"
        },

as

"tasks": [
    {
        "label": "python",
        "type": "shell",
        "command": "python",
        "presentation": {
            "panel": "new"
        }
    }
]

Это не решает проблему полностью, но, по крайней мере, не складывает все результаты один за другим в панель.

На основе https://github.com/Microsoft/vscode/issues/35642

person cerebrou    schedule 15.02.2018
comment
по-прежнему предлагает: нажмите любую клавишу, чтобы закрыть терминал. - person Gang Yin; 02.05.2019
comment
@GangYin - вам все еще нужно установить "showReuseMessage": false, чтобы подавить сообщение. - person kimbaudi; 05.08.2019
comment
Я не думаю, что "panel": "new" это хорошая идея. Это будет добавлять новый встроенный терминал каждый раз, когда вы запускаете задачу. Я думаю, что значение по умолчанию "panel": "shared" совершенно нормально, и вместо этого вы должны установить "showReuseMessage": false и "reveal": "silent" - person kimbaudi; 05.08.2019