做了兩個版本,一個運行程序時,將終端調出,方便交互。
如下,因為我用的是kde桌面環境,所以常用終端的是konsole,對於gnome或其他桌面環境,改成gnome-terminal或x-terminal等終端即可。
{
"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": "Build & Run",
"shell_cmd": "konsole -e bash -c \"g++ '${file}' -o '${file_path}/${file_base_name}' ; '${file_path}/${file_base_name}' ; read -p '\nPress ENTER or type command to continue...'\""
},
{
"name": "Build Only",
"shell_cmd": "g++ '${file}' -o '${file_path}/${file_base_name}'"
},
{
"name": "Run Only",
"shell_cmd": "konsole -e bash -c \"'${file_path}/${file_base_name}' ; read -p '\nPress ENTER or type command to continue...'\""
}
]
}
另一個通過管道直接讀取in輸入文件和寫入out輸出文件,方便做用列測試(做ACM題時比較方便)。
{
"shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\" < \"${file_path}/in\" > \"${file_path}/out\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "Build & Run",
"shell_cmd": "g++ '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}' < '${file_path}/in' > '${file_path}/out'"
},
{
"name": "Build Only",
"shell_cmd": "g++ '${file}' -o '${file_path}/${file_base_name}'"
},
{
"name": "Run Only",
"shell_cmd": "'${file_path}/${file_base_name}' < '${file_path}/in' > '${file_path}/out'"
}
]
}
Ctrl + B快捷鍵的默認行為是variants中的第一項(本來以為應該是variants外面的那一項,可我測試了,發現不是);
Shift + Ctrl + B 可自由選擇這四項中的某一項。