我的Sublime的一些配置
环境:Win10 Sublime 4
命令一键文件重定向输入输出
优化日志:
1.能够将输入输出重定向到文件
2.自动关闭output时出现的cmd窗口
3.一个命令编译并运行
4.添加快捷键一键编译运行
输入输出重定向到文件
简介:设置命令,一键让程序从std.in读入,输出到std.out。
背景:由于Acmer总是需要样例的输入与输出,如果样例输入很多,输出与样例混杂在一起,会比较难看。
这个时候就需要将输入输出重定向到文件
转载,觉得谢大写得好的可以投个币
自动关闭output时出现的cmd窗口
由于每次output输出到文件时,都会出现cmd这个黑框框,需要手动删掉,十分麻烦,下面代码就是自动关掉这个cmd黑框框,不过还是会闪一下。
把run.bat改为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @echo off if "%time:~0,2%" lss "10" (SET HOUR=%time:~1,1%) else (SET HOUR=%time:~0,2%) if "%time:~3,2%" lss "10" (SET MINUTE=%time:~4,1%) else (SET MINUTE=%time:~3,2%) if "%time:~6,2%" lss "10" (SET SECOND=%time:~7,1%) else (SET SECOND=%time:~6,2%) if "%time:~9,2%" lss "10" (SET MILLISECIOND=%time:~10,1%) else (SET MILLISECIOND=%time:~9,2%) set /a START=%HOUR%*3600*100+%MINUTE%*60*100+%SECOND%*100+%MILLISECIOND% %1 <%2 >%3 if "%time:~0,2%" lss "10" (SET HOUR=%time:~1,1%) else (SET HOUR=%time:~0,2%) if "%time:~3,2%" lss "10" (SET MINUTE=%time:~4,1%) else (SET MINUTE=%time:~3,2%) if "%time:~6,2%" lss "10" (SET SECOND=%time:~7,1%) else (SET SECOND=%time:~6,2%) if "%time:~9,2%" lss "10" (SET MILLISECIOND=%time:~10,1%) else (SET MILLISECIOND=%time:~9,2%) set /a END=%HOUR%*3600*100+%MINUTE%*60*100+%SECOND%*100+%MILLISECIOND% set /a TOTAL=(%END%-%START%)*10 echo. echo Run time : %TOTAL% ms
if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin
|
如果不需要runtime这个信息,run.bat改为如下即可
1 2 3 4 5 6
| @echo off %1 <%2 >%3 if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin
|
一个命令编译并运行
由于每次需要先点g++编译再点run或output运行,十分麻烦,那么可不可以一个命令让编译并运行呢?答案是肯定的,代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| { "working_dir": "${file_path}", "cmd": ["g++", "${file}", "-o", "${file_base_name}.exe", "-lm", "-Wall", "-O2","-std=gnu++11","-Wl,--stack,100000000"], "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c", "shell": true, "variants": [ { "name": "Run", "shell_cmd": "g++ -Wall -std=c++11 \"$file\" -o \"$file_base_name\" && start cmd /c \"${file_path}/${file_base_name} & pause\"" }, { "name": "Output", "cmd": ["g++", "-Wall","${file}", "-o", "${file_path}/${file_base_name}", "&&", "start","/D ${file_path}","run.bat","${file_base_name}.exe","std.in","std.out"] }, ] }
|
快捷键一键编译运行
我不想每次ctrl+shift+b来选择命令运行,太麻烦了,那么能不能设置个快捷键呢?答案是肯定的,方法如下:
在sumlime点击preferences->key bindings
然后在里面加上以下代码即可:
1 2 3 4 5
| [ {"keys": ["f9"], "command": "build", "args": {"variant": "Run"}}, {"keys": ["f10"], "command": "build", "args": {"variant": "Output"}} ]
|
最终配置
g++.sublime-build:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| { "working_dir": "${file_path}", "cmd": ["g++", "${file}", "-o", "${file_base_name}.exe", "-lm", "-Wall", "-O2","-std=gnu++11","-Wl,--stack,100000000"], "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c", "shell": true, "variants": [ { "name": "Run", "shell_cmd": "g++ -Wall -std=c++11 \"$file\" -o \"$file_base_name\" && start cmd /c \"${file_path}/${file_base_name} & pause\"" }, { "name": "Output", "cmd": ["g++", "-Wall","${file}", "-o", "${file_path}/${file_base_name}", "&&", "start","/D ${file_path}","run.bat","${file_base_name}.exe","std.in","std.out"] }, ] }
|
run.bat:
1 2 3 4 5 6
| @echo off %1 <%2 >%3 if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin REM
|
快捷键:
1 2 3 4 5
| [ {"keys": ["f9"], "command": "build", "args": {"variant": "Run"}}, {"keys": ["f10"], "command": "build", "args": {"variant": "Output"}} ]
|
至此,大功告成!!!快快来享受代码的乐趣吧!
(终于把编辑器配成了自己理想的样子)
文件头部注释
简介:在文件头部自动写上一啪啦的模板代码
背景:由于Acmer在每个cpp文件都要写上头文件,宏定义等一系列模板,这个时候就需要一个插件FileHeader了
安装什么的就不多说了,网上都有,这里重点讲下配置
1.修改author等信息
设置–>首选项–>插件设置–>File Header–>settings-User(这里一定是user,别选默认)
添加以下内容
1 2 3 4 5 6 7
| { "Default": { "author":"Ding Jianlong", "last_modified_by":"Ding Jianlong", "email":"123@51015.cn" } }
|
2.文件自动添加头文件,宏定义等文件头部注释
在”C:\Users\BohongLi\AppData\Roaming\Sublime Text\Packages\FileHeader\template\header”下找到对应语言的tmpl(C++是C++.tmpl)(AppData得显示隐藏文件才能看到)
比如我这里是C++.tmpl,我就在文件末尾加上我的板子即可,注意板子中不要有注释符号”//“,不然可能显示不出来。
好像template\body里也有个对应的C++.tmpl,这个应该用来贴文件头部那一啪啦好像更合适,不过下次再弄吧,12点半了,困了,困了