说起来,大一刚进浙大的时候,有这样一门“程序设计基础”课,学的是C。东西倒不是特别难,可是偏偏写代码用的IDE是Dev C++——这么一款没有代码自动补全,调试不好用,如今基本没有企业会用的这么一款IDE。如果一定要说Dev有什么好的话……大概就是写一次代码不需要新建一个工程……而且对于大一或者大二不需要建工程的代码比较多的情况下还是一个不错的选择。只是没有代码自动补全还是太令人难过。
后来偶然之中看到翁恺老师在用Sublime Text讲课,发现这个软件竟然有点厉害。
至于多牛逼:这里已经有人吹过了 。
另外不得的不说这么一款编辑器安装包只有不到10M的大小,打开它只需要1秒,甚至你可以随时在写代码的时候关闭它,不用保存,因为它有cache。
至于强大的开源插件的能力更是爽到,你甚至可以自己为自己编写自定义代码补全等各种功能,或者下载全世界的开发者们为它编写的插件。
不过既然点了进来,显然你已经领略到了Sublime text 3的魅力,那就来一起看看到底该怎么做吧。
内容参考了两篇博客
http://www.cnblogs.com/Just–Do–It/p/7482091.html
https://www.2cto.com/kf/201701/551428.html
在此基础上进行了一点融合与解说
主要的编译思路就是我们用Sublime Text去用命令提示窗进行编译
利用命令提示窗,我们可以实现编译。实际上我们是使用gcc.exe这个文件进行编译。
安装的Dev C++里面已经为我们准备好了。如果没有装Dev C++,可以直接安装MinGW。网站是英文的完全看不懂 在线下载网络连接还不太好 不如直接装Dev
我们到命令提示窗里面去输入这个代码来编译一下:
——————————————————————
写一个简单的代码:
——————————————————————
我们的文件放到F的根目录下。地址为F:\test.c ,一般我们使用的最简单的编译指令是:
gcc F:\test.c -o F:\test
——————————————————————
然而……
这是因为我们的gcc不在系统认识的PATH里,所以我们需要添加一个环境变量。
——————————————————————
右键【此电脑】->【属性】-> 【高级系统设置】 -> 【高级】 -> 【环境变量】
——————————————————————
我的Dev C++已经装好了MinGW,找到gcc的位置,添加进PATH里
——————————————————————
我们再来试一次:
这样就可以成功编译了。
——————————————————————
完成这步之后,你可能需要重启一下电脑才能顺利地使用Sublime Text的编译功能
使用快捷键Ctrl + Shift + B选择编译格式,你就可以看到Sublime Text预提供的编译选项了(C++)
这个地方如果没有东西,看一下右下角的文件格式,你是否把语法设置为了C或者C++。在【工具】 -> 【编译系统】里可以选择“自动”或者是“C++ Single File"。
前者是编译,带有"-Run"的是编译并在Sublime Text里运行。
——————————————————————
注意 编译之前先要保存文件 否则因为没有参数传入会编译失败
我们试一下:
完 全 胜 利
——————————————————————
但是这么做又会有个问题,那就是无法输入,任何有scanf(); 或者是getchar(); 这样的函数会使得程序卡住。因此我们需要自定义一个编译方法可以用命令行打开编译的文件,就像Dev C++编译并运行一样。
我们可以用start打开我们编译的文件:
start F:\test
看到什么了吗?一个框闪了一下马上就消失了。所以我们可以加个&pause来留下它美丽的瞬间。
整体的思路就是先用命令行传入文件的位置信息和名字信息执行编译,打开cmd来执行对应的exe,并添加一个pause来暂停。
——————————————————————
在Sublime Text里点击【首选项】 -> 【浏览插件目录】打开文件夹,在…\Packages\User\ 里新建一个名为"C.sublime-build"的文件,把下面的代码放进去,注意扩展名是".sublime-build"。
关于JSON我了解的不多,就直接输入代码就好了:
{
"encoding": "utf-8",
"working_dir": "$file_path",
"shell_cmd": "g++ -Wall \"$file_name\" -o \"$file_base_name\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c",
"variants":
[
{
"name": "编译运行",
"shell_cmd": "g++ -Wall -std=c++0x \"$file\" -o \"$file_base_name\" && \"${file_path}/${file_base_name}\""
},
{
"name": "cmd:运行",
"shell_cmd": "start cmd /c \"\"${file_path}/${file_base_name}\" & pause \""
},
{
"name": "cmd:编译运行",
"shell_cmd": "g++ -Wall -std=c++0x \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause \""
}
]
}
——————————————————————
然后保存,再Ctrl + Shift + B打开编译选项,就可以看到之刚才的自定义编译了。
——————————————————————
简单说一下四个选项的功能:
C:编译,最后会生成一个 *.exe 文件
C - 编译运行 : 编译,生成一个 *.exe 文件,然后在Sublime Text里运行。任何需要输入的程序都不能选这个选项。
C - cmd:运行 :直接运行编译生成的 *.exe 文件,这个选项不会进行编译,因为不需要编译,所以可以立即打开文件,一般用于反复测试的时候。
C - cmd:编译运行:编译,然后生成的 *.exe 文件。就像Dev C++按下F11的时候一样爽。
——————————————————————
另外Ctrl + B是直接重复上次选择的编译选项进行编译。
细心的同学已经发现了,JSON码里面的用的明明是g++……
这个主要是gcc编译的时候,主函数不写return 0; 会被出警(悲)
但是后来的g++编译的时候就会帮你补上这个,就很方便,所以用的是这段指令。
另外C++编译的话,只需要修改一下语句里面的这句话
"selector": "source.c"
增加一个
"selector": "source.c, source.c++"
这样在选择语法为C++的时候也会有显示。
有关汉字编码导致无法正常显示中文的问题参考了一下这个大大的文章:
https://blog.csdn.net/huangmx1995/article/details/52823188
{
"encoding": "utf-8",
"working_dir": "$file_path",
"shell_cmd": "g++ -Wall \"$file_name\" -o \"$file_base_name\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "编译运行",
"shell_cmd": "g++ -Wall -std=c++0x \"$file\" -o \"$file_base_name\" && \"${file_path}/${file_base_name}\""
},
{
"name": "cmd:运行",
"shell_cmd": "start cmd /c \"\"${file_path}/${file_base_name}\" & pause \""
},
{
"name": "cmd:编译运行",
"shell_cmd": "g++ -Wall -std=c++0x -fexec-charset=GBK \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause \""
}
]
}
主要是在cmd:编译运行里面加了如下编码。
没有在编译运行里面加主要是因为Sublime Text里面用的是UTF-8编码,加上之后反而不能正常显示。
-fexec-charset=GBK