Sublime text 3-компиляция программы и запуск в терминале
Я использую Ubuntu 12.04, и мне было интересно, можно ли автоматически запускать программу c++ из терминала? Это действительно отстой, когда вам нужно использовать build in console, потому что иногда я делаю бесконечные циклы случайно и должен перезапустить sublime text, чтобы снова работать. Я использую Sublime text 3.
5 ответов
Sublime Text 3 включает в себя две системы сборки, которые могут вас заинтересовать: C++ и Make. The следующим образом:
{
"shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "Run",
"shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
}
]
}
чтобы использовать его, перейдите в Tools -> Build System
и выберите C++
. Теперь вы можете использовать CtrlB для запуска сборки (верхняя команда) или CtrlShiftB запустить Run
вариант.
{
"cmd": ["g++", "$file", "-o", "${file_path}/${file_base_name}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++, source.cxx, source.cpp",
"variants":
[
{
"name": "Run",
"shell": true,
"cmd": ["gnome-terminal -e 'bash -c \"${file_path}/${file_base_name};echo;echo; echo Press ENTER to continue; read line;exit; exec bash\"'"]
}
]
}
Он может работать в терминале и ввода данных с клавиатуры
Я думаю, что принятый ответ не достигает того, чего хочет достичь ОП. OP хотел знать, как выполнить текущий файл в терминале.
настройка@Flycode не работает для меня. Я использую CentOS 7 с возвышенным текстом 3. Поскольку люди могут использовать разные эмуляторы терминалов, я перечисляю разные настройки для разных терминалов.
Примечание
следующие установки испытаны на вышеуказанной окружающей среде и работают что ж. Я не могу гарантировать, что они будут работать на других средах. Дайте мне знать, если это не сработает для вас.
Вариант 1: терминал GNOME
вы можете использовать следующие настройки,
{
"shell_cmd": "g++ -std=c++11 -Wall \"${file}\" -o \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"shell": true,
"working_dir": "${file_path}",
"selector": "source.c++, source.cxx, source.cpp, source.cc",
"variants":
[
{
"name": "Run",
"shell_cmd": "gnome-terminal -e 'bash -c \"${file_path}/${file_base_name};exec bash \"'",
}
]
}
gnome-terminal автоматически закроет окно выполнения, приведенная выше команда
"shell_cmd": "gnome-terminal -e 'bash -c \"${file_path}/${file_base_name};exec bash \"'"
используется, чтобы убедиться, что мы можем видеть результат выполнения. См.это так пост более подробно о том, как предотвратить gnome-терминал автоматически закрывается.
Вариант 2: XTerm
вы можете использовать следующую настройку (для краткости я оставляю некоторые настройки)
{ // same stuff as option 1
"variants":
[
{
"name": "Run",
//use this if you want to input other command after programm execution
"shell_cmd": "xterm -e '${file_path}/${file_base_name}; bash'",
//or you can use the below setting if you just want to execute this program
// "shell_cmd": "xterm -hold -e ${file_path}/${file_base_name}",
}
]
}
посмотреть это так пост о предотвращении автоматического закрытия окна xterm.
Вариант 3: Konsole
вы можете использовать следующие настройки,
{ // same stuff as option 1
"variants":
[
{
"name": "Run",
"shell_cmd": "konsole --hold -e ${file_path}/./${file_base_name}",
}
]
}
посмотреть здесь здесь на обсуждении, чтобы провести konsole windows после excuting программа.
на Mac, я использую fswatch (Я уверен, что в Linux есть что-то подобное) для автоматического создания и запуска testcase при сохранении.
вот моя конфигурация для компиляции и запуска программ на C++. Программа принимает входные данные из входного файла'.txt 'и выводит вывод на" вывод.txt'.Оба файла присутствуют в текущем рабочем каталоге.
ОС: ubuntu 16
sublime 3
- >"Инструменты > система сборки > новая система сборки" и скопируйте следующую настройку
{
"shell_cmd": "g++ -std=c++11 -Wall \"${file}\" -o \"${file_path}/${file_base_name}\" ",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"shell": true,
"working_dir": "${file_path}",
"selector": "source.c++, source.cxx, source.cpp, source.cc",
"variants":
[
{
"name": "Run",
"shell_cmd": "gnome-terminal -e 'bash -c \"${file_path}/${file_base_name} < input.txt > output.txt \"'",
}
] }