web-dev-qa-db-ja.com

Sublime Text 3-プログラムをコンパイルしてターミナルで実行

Ubuntu 12.04を使用していますが、端末からc ++プログラムを自動的に実行できますか?コンソールでビルドを使用しなければならない場合、本当にうんざりします。偶然に無限ループを作成し、再び動作するために崇高なテキストを再起動する必要がある場合があるからです。 Sublimeテキスト3を使用しています。

11
user2648841

Sublime Text 3には、C++とMakeの2つのビルドシステムが含まれています。 C++.sublime-buildファイルは次のとおりです。

{
    "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バリアントを実行します。

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

端末で実行し、キーボードからデータを入力できます

7
Flycode

受け入れられた答えは、OPが達成したいことを達成しないと思います。 OPは、ターミナルで現在のファイルを実行する方法を知りたいと思っていました

@Flycodeの設定は機能しません。 Sublime Text 3でCentOS 7を使用しています。人々は異なるターミナルエミュレータを使用する可能性があるため、異なるターミナルの異なる設定をリストします。

以下の設定は、上記の環境でテストされており、適切に機能します。他の環境で動作することを保証できません。うまくいかない場合はお知らせください。

オプション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-terminalが自動的に閉じないようにする方法の詳細については、 this SO post を参照してください。

オプション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ウィンドウが自動的に閉じないようにする方法については、 this SO post を参照してください。

オプション3:Konsole

次の設定を使用できます。

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

プログラムの実行後にkonsoleウィンドウを保持する方法については、こちらと here を参照してください。

1
jdhao

このビルドを通じて、ctrl + shift + Bを押すことにより、subimeからC/C++プログラムを直接実行できます。

実行時にユーザー入力を許可します。

また、ターミナルを直接実行するとターミナルが表示されるため、ターミナルウィンドウにエラーが表示されるため、デバッグにも役立ちます。

{ 
   "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.cpp",
   "Shell":true,
   "variants": [
   { 
       "name": "Run",
        "cmd" : ["gnome-terminal -- bash -c \"g++ $file_name ;echo -------------output--------------; ./a.out;echo;echo;  echo Press ENTER to continue; read line;exit; exec bash\""
     ],
   }
 ]
}
0
akhil

C++プログラムをコンパイルして実行するための私の構成を次に示します。プログラムは、ファイル「input.txt」から入力を取得し、出力を「output.txt」に出力します。両方のファイルは現在の作業ディレクトリにあります。
OS:ubuntu 16
崇高な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 \"'",
    }
] }
0
snehm

ツール>>ビルドシステム>>新しいビルドシステム次に、これを貼り付け、Ctrl + Sを押してファイルを保存します。次に、[ツール] >> [システムのビルド] >>ファイルを選択する>>コードを書く>> Ctrl + Bを押す>> [ビルドでターミナルで実行]を選択してコードを実行する

{
"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

Macでは、 fswatch (Linuxに似たものがあると確信しています)を使用して、保存時にテストケースを自動的にビルドおよび実行します。

0
Eugene