web-dev-qa-db-fra.com

Sublime text 3 - compiler le programme et le lancer dans le terminal

J'utilise Ubuntu 12.04 et je me demandais s'il est possible d'exécuter automatiquement un programme c ++ à partir d'un terminal. C’est vraiment nul quand vous devez utiliser la console de compilation parce que parfois je fais des boucles infinies par accident et je dois redémarrer le texte sublime pour fonctionner à nouveau . J'utilise le texte Sublime 3.

11
user2648841

Sublime Text 3 comprend deux systèmes de construction qui pourraient vous intéresser: C++ et Make. Le fichier C++.sublime-build se présente comme suit:

{
    "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}\""
        }
    ]
}

Pour l'utiliser, allez à Tools -> Build System et sélectionnez C++. Vous pouvez maintenant utiliser CtrlB exécuter la construction (commande supérieure), ou CtrlShiftB pour exécuter la variante Run.

20
MattDMo
{
  "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\"'"]
      }
  ]    
}

Il peut fonctionner dans le terminal et entrer les données du clavier

7
Flycode

Je pense que la réponse acceptée ne permet pas d’atteindre ce que le PO veut atteindre. L'OP voulait savoir comment exécuter le fichier actuel dans un terminal.

Le réglage de @ Flycode ne fonctionne pas pour moi. J'utilise CentOS 7 avec Sublime Text 3. Etant donné que les utilisateurs peuvent utiliser différents émulateurs de terminal, je liste donc différents paramètres pour différents terminaux.

Remarque

Les paramètres suivants sont testés sur l’environnement ci-dessus et fonctionnent bien. Je ne peux pas garantir qu'ils travailleront sur d'autres environnements. Faites-moi savoir si cela ne fonctionne pas pour vous.

Option 1: terminal GNOME

Vous pouvez utiliser le paramètre suivant,

{
    "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 fermera automatiquement la fenêtre d'exécution, la commande ci-dessus

   "Shell_cmd": "gnome-terminal -e 'bash -c \"${file_path}/${file_base_name};exec bash \"'" 

est utilisé de cette façon pour s'assurer que nous pouvons voir le résultat de l'exécution. Voir this SO post pour une discussion détaillée sur la prévention de la fermeture automatique de gnome-terminal.

Option 2: XTerm

Vous pouvez utiliser le paramètre suivant (par souci de concision, certains paramètres sont omis)

{    // 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}",

        }
    ]
}

Voir cet article SO à propos de la prévention de la fermeture automatique de la fenêtre xterm.

Option 3: Konsole

Vous pouvez utiliser le paramètre suivant,

{    // same stuff as option 1
        "variants":
        [
            {
                "name": "Run",
                "Shell_cmd": "konsole --hold -e ${file_path}/./${file_base_name}",        
            }
        ]
}

Voir ici et ici sur la discussion pour tenir les fenêtres de la konsole après avoir exécuté le programme.

1
jdhao

Voici ma configuration pour compiler et exécuter des programmes C++. Le programme prend les entrées du fichier 'input.txt' et affiche le résultat dans 'output.txt'. Les fichiers présents dans le répertoire de travail en cours.
OS: Ubuntu 16
sublime 3
-> "Outils> Système de construction> Nouveau système de construction" et copie des paramètres suivants

{
"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 \"'",
    }
] }
0
snehm

Outils >> Système de construction >> Nouveau système de construction Ensuite, collez ceci Et appuyez sur Ctrl + S pour enregistrer le fichier . Maintenant Allez à Outils >> Créer système >> Sélectionnez votre fichier >> Maintenant écrivez votre code >> Appuyez sur Ctrl + B> > Sélectionnez Exécuter dans un terminal pour générer et exécuter votre code.

{
"Shell_cmd": "g++ -std=c++11 -Wall \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"Shell": true,
"working_dir": "${file_path}",
"selector": "source.c++, source.cpp, source.cc, source.cxx",
"variants":
[
    {
        "name": "Run in Terminal",
        "Shell_cmd": "g++ -std=c++11 -Wall \"${file}\" -o \"${file_path}/${file_base_name}\" && gnome-terminal -e 'bash -c \"${file_path}/${file_base_name}&& echo && echo Press ENTER to continue && read line && exit\"'", // for gnome-terminal    
    }
]

}

0
HimEl

Sur Mac, j’utilise fswatch (je suis sûr qu’il en est de même sous Linux) pour créer et exécuter automatiquement le testcase lors de la sauvegarde.

0
Eugene