最近用Dev-Cpp快用腻了,来配置一波Sublime
C++ 配置
- Tools —> Build System —> New Build System…
Ctrl+A
全部删除,输入下面的代码
| { "encoding": "utf-8", "working_dir": "$file_path", "shell_cmd": ["g++ -Wall -std=c++11 \"$file_name\" -o \"$file_base_name\"", "-fexec-charset=gbk"], "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c++", "encoding": "cp936", "variants": [ { "name": "Run", "shell_cmd": "g++ -Wall -std=c++11 \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\"" } ] }
|
其中我们注意几个地方:
"g++"
:编译器
"-std=c++11"
:依据C++11标准来编译(否则一些新特性会被判失效)
-Wall
:开启-wall提示(竞赛党的福音)
"-fexec-charset=gbk"
:GBK编码格式,默认带中文的
- 保存即可(路径就是他的默认路径不要改,后缀也不能改,名字随便起,如
cpp_11
)
最后就可以愉快的Ctrl+B
手动Debug啦~~
2020.5.29 更新
考虑到上面那样配置显示不出程序运行时间,现在配置一波能够显示程序运行时间的操作
首先新建New Build System,然后复制如下代码进去并替换,保存为另一个名字(如 C++11_time
)并退出
| { "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++ -Wall -std=c++11 \"${file}\" -o \"${file_path}/${file_base_name}\" && timer \"${file_path}/${file_base_name}\" < test.in > test.out" } ] }
|
在程序运行的文件夹下,创建一个timer.cpp
文件,将如下代码复制进去,并保存运行
| #include <cstdio> #include <cstdlib> #include <ctime> #include <windows.h> using namespace std; int main(int argc, char** argv) { clock_t begin = clock(); system(argv[1]); double used = 1000.0 * double(clock() - begin) / CLOCKS_PER_SEC - 200.0; if (used < 0) used = 0.0; printf("------------------------------\n"); printf("Time used: %.2lf ms.\n", used); return 0; }
|
最后,需要在程序运行的文件夹下,创建test.in
和test.out
文件,最终,你的文件夹目录结构如下图所示:
最后只需要在View里面设置一下Layout和Groups,就可以呈现出如下的样式
愉快地享用吧!
2020.6.15 更新
但实际上上面那个方法不太好用,还不如自己手写#ifdef...#endif
来得灵活,与是还是用第一版的C++配置代码(尝试过删除掉最后的&pause
,但处理死循环问题就变得比较麻烦,还得打开任务管理器关闭进程),再在main函数内加入如下代码,就可以实现方案二一样的功能(记得需要在目录下创建一个test.in
和test.out
文件)
| #define LOCAL #ifdef LOCAL freopen("test.in","r",stdin); freopen("test.out","w",stdout); clock_t _begin = clock(); #endif
......
#ifdef LOCAL double _used = 1000.0 * double(clock() - _begin) / CLOCKS_PER_SEC - 200.0; if (_used < 0) _used = 0.0; printf("------------------------------\n"); printf("Time used: %.2lf ms.\n", _used); #endif
|
Python 配置
(Python的Sublime交互式配置我快哭了,REPL安装好了之后Tools里居然没有?果断放弃,采用原始的Save+cmd+python xxx.py
的形式搞)
2020.4.24 更新
ohhhhhh!电脑突然开窍了,配置好啦!现在奉上步骤
Ctrl + Shift + P 唤出Package栏并输入IP
(Install Package),回车等候(左下角有滚动的小条子)
等加载出来一个新的Package栏后,输入SublimeREPL
(要安装的就是这个插件),然后回车等他安装
然后就好了,可以通过 Tools —> SublimeREPL —> Python —> Python - RUN current file来唤起控制台(在第二个标签页出现),这个时候就可以像Pycharm、Spyder一样在控制台控制输入了
为了方便,推荐 Shift + Alt + 8 唤起横向双栏的模式,然后F5调试(调试前记得保存代码),十分快乐
Sublime 主题&外观配置
主题用的是Sublime自带的Adaptive,它能自动适应我的Color主题
Color选用的是Tomorrow的Night(晚上用),以及Breakers(白天用)
字体选用Inconsolata-g
,可以说是十分舒爽了
附上用户配置:
| { "color_scheme": "Packages/Tomorrow Color Schemes/Tomorrow Night.sublime-color-scheme", "font_face": "Inconsolata-g", "font_size": 11, "ignored_packages": [ ], "theme": "Adaptive.sublime-theme" }
|
Sublime Snippet 设置
UPD 2020.6.15
一直以为Sublime无法设置像Dev-C++一样的缺省源,然而昨天查到了,在Sublime里面叫做Snippet(代码段)
,非常的方便
打开工具栏中的 Tools -> Developer -> New Snippet...
,看到如下界面
第3行中的内容就是代码段内容,可以自己添加更改,其中${1:this}
为按下TAB建自动跳转的内容,冒号后面的文字为提示内容
第6行为代码段的名称,可以在写代码时输入该名称导入代码段
第8行为可使用该代码段的源代码文件类型,其类型的语法见下方官方文旦内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| ActionScript: source.actionscript.2 AppleScript: source.applescript ASP: source.asp Batch FIle: source.dosbatch C#: source.cs C++: source.c++ Clojure: source.clojure CoffeeScript: source.coffee CSS: source.css D: source.d Diff: source.diff Erlang: source.erlang Go: source.go GraphViz: source.dot Groovy: source.groovy Haskell: source.haskell HTML: text.html(.basic) JSP: text.html.jsp Java: source.java Java Properties: source.java-props Java Doc: text.html.javadoc JSON: source.json Javascript: source.js BibTex: source.bibtex Latex Log: text.log.latex Latex Memoir: text.tex.latex.memoir Latex: text.tex.latex LESS: source.css.less TeX: text.tex Lisp: source.lisp Lua: source.lua MakeFile: source.makefile Markdown: text.html.markdown Multi Markdown: text.html.markdown.multimarkdown Matlab: source.matlab Objective-C: source.objc Objective-C++: source.objc++ OCaml campl4: source.camlp4.ocaml OCaml: source.ocaml OCamllex: source.ocamllex Perl: source.perl PHP: source.php Regular Expression(python): source.regexp.python Python: source.python R Console: source.r-console R: source.r Ruby on Rails: source.ruby.rails Ruby HAML: text.haml SQL(Ruby): source.sql.ruby Regular Expression: source.regexp RestructuredText: text.restructuredtext Ruby: source.ruby SASS: source.sass Scala: source.scala Shell Script: source.shell SQL: source.sql Stylus: source.stylus TCL: source.tcl HTML(TCL): text.html.tcl Plain text: text.plain Textile: text.html.textile XML: text.xml XSL: text.xml.xsl YAML: source.yaml
|