sodafago
@sodafago
Программист и все такое

Как адекватно задержать консоль в С++ Sublime Text?

Решил попробовать вместо всех этих громоздких IDE, что-нибудь простое. Решил прикрутить к Sublime Text MinGW, чтобы можно было прямо из него компилить и запускать .cpp. Все работает, но есть такая очевидная проблема: после завершения программы, консоль сразу же закрывается, а не ждет Enter, ну это как бы и понятно, так и должно быть, и это даже лечится, с помощью system("pause"). Ноо, это очень неприятно, я как перфекционист, просто не могу так. Все работает примерно так:
1) Вы ставите Sublime Text
2) Вы устанавливаете MinGW
3) Нужно зайти в ПанельУправления->Система и безопасность->Система->Дополнительные параметры системы->Переменные Среды
4) В разделе "системные переменные" найти переменную "path".
5) Добавить к ней через точку с запятой (везде без пробелов) путь, где лежит компилятор MinGW, обычно это в корне диска C в папке MinGW->bin. Либо в Windows 10 (может не только), можно просто добавить в список.

После этого нам нужно добавить Build System (В sublimeText - Tools->Build system -> и выбираем). Там есть уже готовая система, но я нашел, как сделать открытие консоли, и чтобы все выполнялось там:
1) Нужно создать файл
"c:\Users\%UserName%\AppData\Roaming\Sublime Text 3\Packages\User\%название Build System%.sublime-build (у меня MinGW.sublime-build)"
2) Открыть этот файл через блокнот, и туда вставить
{
   "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}"],
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",
   "selector": "source.c, source.c++",
   "shell": true,
   "encoding": "1251",
   "variants":
     [
       {
         "name": "Run",
         "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "${file_base_name}"],
         "shell": true
       }
     ]
}

3) Сохранить, и выбрать вашу Build-System с вашим именем (у меня MinGW)
Проделав все это, вы обнаружите, что все работает. Но вот консоль закрывается, да. И собственно вопрос заключается вот в чем: Можно ли как-нибудь модифицировать этот файл Build-System, чтобы консоль не закрывалась, а ожидала Enter? На сколько я понял, это Json, а я в нем пока не очень бум бум, буквально вчера все это проделал. Если что, вот инструкция, по которой я все это сделал:
www.cyberforum.ru/blogs/390663/blog1982.html
  • Вопрос задан
  • 359 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Dalp
Как я понял, Вы не имеете ничего против команды "pause", а просто не хотите прописывать system("pause") в каждом .cpp файле. В таком случае можно строчку:
"cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "${file_base_name}"],

заменить на:
"cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "cmd", "/K", "${file_path}/${file_base_name} && pause 'TTL'>Nul && exit"],

Здесь после компиляции, вместо запуска кода напрямую, сначала запускается cmd, после чего в него передаётся скомпилированный .exe файл вместе с командой pause и последующей exit (для выхода из cmd).
'TTL'>Nul убирает стандартный текст выводимый командой pause (Для продолжения нажмите любую клавишу . . .), просто иначе этот текст "липнет" к выводу программы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы