最近喜欢折腾各类编辑器。c++
用了vscode官方的c/c++插件,配好launch.json和tasks.json以后用debug仍是感受很不错的。json
可是感受对于acm有些用不上,反而不太灵敏,用起来也不太方便。vim
就想配成像subliime自带的那样:数组
一、编译以后直接运行bash
二、能够把输出显示在下面这种编辑器
考虑到vscode默认ctrl+shift+B是build,只要在tasks.json里写"build"的task就好了,像这样优化
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "tasks": [ { "taskName": "build", "command": "g++", "isShellCommand": true, "args": [ "-o", "${workspaceRoot}/main", "${workspaceRoot}/main.cpp" ], "showOutput": "always" } ] }
咱们就能够把运行的命令也写进去。ui
可是尝试了许多办法,都不行,好比:spa
一、args里后面加上“&&”和"${workspaceRoot}/main"插件
二、tasks数组中写两个task字典,分别是不一样的task,一个是build一个是run。后来看了看微软的文档,貌似只是定义不一样的任务,我一开始还觉得是顺序执行(也许是我没看彻底吧)。
这两个办法都不行,最后想了个办法,直接自定义一个新的bash命令,把编译和运行的命令全都写进去就好了。
一、新建一个文件,命名为gbr(g++ build and run,本身瞎起),随便放在哪,假设在~(家目录)
touch gbr
二、编辑这个文件,随便用什么编辑器gedit,vim,sublime,vscode无所谓,反正内容很少,gedit就够了。
输入一下内容。
g++ -o $1 $1.cpp $1
$1表示外面传的参数
好比说你要编译并运行的文件是~/main.cpp
只要输入 gbr ~/main 就好了。
三、把文件设置为可执行文件,我直接给了755权限。
chmod 755 ~/gbr
四、这个时候你在~目录下已经能够经过./gbr ~/main运行了,可是要让vscode可以使用这个命令,咱们直接把这个文件移动到/usr/bin就行啦。
sudo mv ~/gbr /usr/bin/gbr
这时候在终端里就能用gbr ~/main 运行这条命令了。
五、最后在vscode中修改tasks.json配置便可。
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "tasks": [ { "taskName": "build", "echoCommand": true, "command": "gbr", "isShellCommand": true, "args": [ "${workspaceRoot}/main" ], "showOutput": "always" } ] }
echoCommand参数是让命令在下面显示出来。
这个方法只是我本身的一个小小探索,不过我想确定有更加简便的方法,或许往后会发现。
一、编译c++14
二、计算并输出程序运行时间。
修改gbr文件便可:
#!/bin/bash # get start time start=$(date +%s%N) start_ms=${start:0:16} # build g++ -o $1 $1.cpp -std=c++14 # run $1 # get end time end=$(date +%s%N) end_ms=${end:0:16} #output printf "[Finished in %.1fs]\n" $(echo "scale=1; ($end_ms - $start_ms)/1000000" | bc)