本文较为详细地介绍了在Windows系统下,如何配置Sublime Text的C++编译运行环境。目前实现了了可以在Sublime Text按下快捷键后,调出CMD或者终端来运行C/C++程序,从而解决了Sublime Text无法接收输入的问题。

另外本文也介绍了一些Sublime Text的使用和用户配置备份的方法,具有一定的参考作用。

1.使用背景

现在搞ACM-ICPC的比赛,经常写算法程序。说一说使用过的IDE吧:

  • Visual Studio 2013~2019

    配合Visual Assist插件真的非常好用,没有之一!无论是写程序或者调试代码都能非常优雅地完成!当然我只用到了这个它的一小部分,不过我感觉这种企业级别的IDE绝对是写工程的不二选择。可惜在比赛时并不会提供这么优秀的IDE,而且想 VS 这种大型IDE是很吃机器配置的。在老式台式机上打开项目的速度几乎崩溃。

  • CodeBlock 和 Dev

    比赛举办方通常提供的IDE,一个开源的轻量级的IDE。体积不大,功能也比较齐全,不过个人稍微觉得有几个缺点:界面颜值较低,虽然有字体颜色等几项可调节,但两个IDE给我的感觉就是不好看(老颜狗了

    关于下载速度的话,由于我电脑上常年有科学方法所以没有感到下载速度慢

  • VS Code

    VS Code同VS一样出自微软,曾经我写过 Windows VS Code 配置 C/C++ 开发环境教程 ,再看发布时间发现已经使用了接近一年了(是目前使用时间最长的IDE软件),但作为一个追求简洁和敲代码敲个爽的蒟蒻决定放弃 VS Code(尽管各方面已经被我调教的很好了)

2. 下载安装

官网下载。Sublime Text是需要激活的,当然你不激活也可以正常使用,只是它会时不时提醒你而已。有能力的话,还是可以支持一下这么优秀的一款软件~

2.1 细节配置

字体、主题风格等设置

当需要更改主题时,直接可以通过Preferences —> Color Scheme来设置,主界面上只能改变字体的大小。若需要改变字体和字体大小,可以先Preferences —> Browse Packages,找到Default文件夹,然后找到Preferences.sublime-settings这个文件,用Sublime Text 3打开这个文件,这个文件保存了一些常用的设置,比如字体、主题风格、是否显示行号、智能提示延迟时间等,可以根据自己的需要自行设置。

打开(关闭)侧边栏、右边缩略图等常用面板

默认情况下Sublime Text 3是没有打开侧边栏文件浏览器的,可以通过View来打开和关闭侧边栏,默认情况下Sublime Text 3右边是有文件的缩略图的,可以通过View来打开和关闭缩略图。

快捷键寻找文件和已定义的函数

在Sublime Text 3中可以非常快速地切换到想找的文件,只需要通过Ctrl+P打开切换面板即可。然后输入想找的文件名称就可以快速找切换到该文件了。如果想要找函数,可以通过输入@+函数名可以快速切换到定义该函数的文件。

2.2 插件安装

这里记录了我最常用的几个插件

Package Control

必装的插件,有了它可以很方便的安装和管理其他的插件。

  1. 在Sublime Text中使用快捷键ctrl+``调出console或者点击:View->Show Console`.然后把以下代码(适用于Sublime Text 3)复制进去:

     import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

    如果安装失败请打开全局代理或者手动安装

    手动下载方法:

    • 点击 Preferences > Browse Packages…menu
    • 在packages文件夹的上层目录有一个Installed Packages目录
    • 点击链接下载 Package Control.sublime-package 并且复制到 Installed Packages目录
    • 重启软件
  2. 重启 Sublime Text

  3. Perferences->package settings中看到package control这一项,则安装成功。

  4. Ctrl+Shift+p调出命令面板,选择Install Package并回车,在弹出的界面输入你想要安装的插件名字,回车安装即可。

  5. 这里给出一些我用到的插件:

    • ConvertToUTF8 : 解决中文在sublime中乱码的问题

      如果出现乱码,只要在File里面找到Encoding并选择合适的编码模式即可,快捷键Ctrl+Shift+C

    • AStyleFormatter:Sublime Text 3下的C/C++代码整理工具,好像还支持java

      设置在文件保存时的自动格式化:Preferences —> Packge Settings ->sublimeAStyleFormatter ->(setting default)

      修改 autoformat_on_save 的值为 true 即可

      关于格式化的样式也可以在这里修改,具体选择的中文解释:Here

    • EasyClangComplete:C++极简极速快速补全的插件

    • SyncedSideBarBg: 解决sidebar颜色和sublime背景不统一的问题

    • SideBarEnhancements: 侧边栏增强

  6. 备注

    • 打开sidebar的方法:快捷键Ctrl+k,Ctrl+b或者View->SideBar->Show SideBar
    • 要使用SideBarEnhancements需要在File->Open Folder中打开一个文件夹,才能在sidebar中进行新建,删除等操作。
    • 插件的设置可以在:Perferences->package settings进行如用户配置,快捷键配置等设置

3. 配置C++编译环境

  1. 下载编译器(已有的可以跳过此步):MinGW或者tdm gcc二选一即可。推荐用tdm gcc

    安装地址:minGWtdm-gcc。鉴于外国网站网速感人,下面丢两个我离线下载到百度网盘的版本,如失效可留言:minGW 网盘地址tdm gcc网盘地址。最新版本请以第1,2条下载地址的为准。

  2. tdm gcc的安装过程非常简单,下载下来直接next,next,next就可以了。MinGW的安装过程稍稍麻烦一些。把之前的minGW安装器安装完之后打开,如图勾选

    ,然后在Installation->Apply Changes

  3. 设置环境变量(win10环境):此电脑->属性->高级系统设置->环境变量->系统变量中的path->添加你的编译器路径下的bin目录。比如我的minGW安装路径是:C:\MinGW,则添加C:\MinGW\bin。我的tdm gcc安装路径是: C:\TDM-GCC-64,则添加C:\TDM-GCC-64\bin。按你安装的编译器是什么来选择,这里注意查看这个bin目录下是否有g++.exe,gcc.exe等,有则是正常的路径。

  4. 测试g++/gcc环境:在cmd中输入g++ -v

  5. 在Sublime Text中编写cpp程序测试:

    在Sublime Text新建文件demo.cpp并按ctrl+b编译输出。测试成功如图所示

    (注:你可以在tool->build-system中选择编译系统。)

3.1 Sublime build System配置

很快你会发现,按上面的方法写出来的程序只能输出,不能输入。不像我们在IDE上面编写的程序那样,执行的时候会弹出CMD来接受输入,那么这时候我们需要自定义一个Sublime build System

  1. 首先花一点点时间来了解一些基础知识:

    • sublime build system目录:

       {
      "folders":
      [
      {
      "follow_symlinks": true,
      "path": "."
      }
      ],
      "build_systems":
      [
      {
      // 在选定 Tools | Build System | Automatic 时使用。Sublime Text使用这个 选择器自动为活动试图选择构建系统
      "selector": "source.python",
      // 在运行``cmd``前会切换到该目录。运行结束后会切换到原来的目录。
      "working_dir":"D:/Developer/pyenv/python27",
      // 输出``cmd``的编码。必须是合法的Python编码,缺省为``UTF-8``
      "encoding":"UTF-8",
      // 在环境变量被传递给``cmd``前,将他们封装成词典。
      "env": {"PYTHONPATH":"."},
      // 如果该选项为``true`` ,``cmd``则可以通过shell运行
      "shell":false,
      // 该选项可以在调用``cmd``前替换当前进程的’ PATH 。原来的’ PATH 将在运行后恢复。使用这个选项可以在不修改系统设置的前提下将目录添加到’ PATH 中
      "path":"./Scripts;%PATH%",
      // For Mac OS X and Linux and Unix
      //"path":"/Users/user/work/myvirtualenv/bin:$PATH",
      "name": "Run virtualenv python",
      // 包括命令及其参数数组。如果不指定绝对路径,外部程序会在你系统的:const:PATH 环境变量中搜索。
      "cmd": ["python.exe", "-u", "$file"],
      // ``file_regex``选项用Perl的正则表达式来捕获构建系统的错误输出,主要包括四部分内容,分别是 file name*, line number, column number and error message. Sublime Text 在匹配模式中使用分组的方式捕获信息。file name 和 *line number*域是必须的
      "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)"
      // variants 用来替代主构建系统的备选。如果构建系统的选择器与激活的文件匹配,变量的``名称``则 会出现在 Command Palette 中。
      // line_regex: 当``file_regex``与该行不匹配,如果``line_regex``存在,并且确实与当前行匹配, 则遍历整个缓冲区,直到与``file regex``匹配的行出现,并用这两个匹配决定最终要跳转的文件 或行 // $file_path 当前文件所在路径, 比如 C:\Files.
      // $file 当前文件的完整路径, 比如 C:\Files\Chapter1.txt.
      // $file_name 当前文件的文件名, 比如 Chapter1.txt.
      // $file_extension 当前文件的扩展名, 比如 txt.
      // $file_base_name 当前文件仅包含文件名的部分, 比如 Document.
      // $packages Packages 文件夹的完整路径.
      // $project 当前项目文件的完整路径.
      // $project_path 当前项目文件的路径.
      // $project_name 当前项目文件的名称.
      // $project_extension 当前项目文件的扩展部分.
      // $project_base_name 当前项目仅包括名的部分.
      }
      ]
      }
    • g++编译命令:

      Test.cpp为例,命令: g++ Test.cpp。生成默认为a.exe的文件,这个过程包含了编译和链接。再说下-o命令,-o命令表示输出的意思,gcc/g++命令是非常灵活的,你不指定输出的文件名的时候默认生成的是.exe文件。你要输出Test.exe的话可以用:g++ -o Test.exe Test.cpp。-o命令是输出的意思,这样就输出了Test.exe。命令:-Wall:输出所有警告信息

    • cmd命令

      /c:当执行完相应的命令(在命令提示符中)后自动退出命令提示符;pause:暂停命令,执行时会在命令行窗口显示“请按任意键继续. . .”并等待你按键。;当路径中的文件名/文件夹名字含有空格时,需要用""将这个文件名/文件夹名字括起来。

  2. 开始配置:(这里的介绍来自 Echo 学长)

    Sublime Text 3->Tools->Build System->New Build System,输入以下内容:

     {
    "encoding": "utf-8",
    "working_dir": "$file_path",
    "shell_cmd": "g++ -Wall \"${file}\" -o \"${file_path}/${file_base_name}\"",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "selector": "source.c++", "variants":
    [
    {
    "name": "Run",
    "shell_cmd": "g++ -Wall \"${file}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""
    }
    ]
    }

    解释一下

      "shell_cmd": "g++ -Wall "{file}\" -o \"{file_base_name}" && start cmd /c ""{file_path}/{file_base_name}" & pause"

    d:test.cpp为例,这里相当于在cmd中执行了g++ -Wall "D:\blank and blank\test and test.cpp" -o "D:\blank and blank/test and test",这句话的意思就是:用g++编译器编译D:\blank and blank\test and test.cpp文件,并在译D:\blank and blank\目录下生成test and test文件。之前都是直接从网上复制下来别人写的,结果都没有解决文件名和文件路径中包含空格的问题。我这里使用了转义字符\和”来把文件名和文件路径用双引号括起来,解决了空格的问题。

      start cmd /c \"\"${file_path}/${file_base_name}\" & pause\"

    类似地,这句话的意思就是:启动cmd并输入命令”D:\blank and blank/test and test” & pause,运行结果如图:

    你可以在Sublime Text中的console中看到你在ctrl+b编译之后的执行的命令

  3. 保存配置文件:

    ctrl+s保存配置文件,文件名xx.sublime-bulid,这里后缀名一定要是sublime-bulid,然后你就可以在Preference->Browse Package->user文件夹中找到你保存的xx.sublime-bulid文件了。接下来在tool->build-system中选择xx(你刚刚保存的文件的文件名)。然后你就可以直接在Sublime Text中按ctrl+b或者ctrl+shift+b来编译运行了,程序都是以cmd的形式运行的。

4. 开启C++11

开启c++11只需要在刚刚的配置文件中加入-std = c++11,完整的配置如下:

  {
"encoding": "utf-8",
"working_dir": "$file_path",
"shell_cmd": "g++ -Wall -std=c++11 \"${file}\" -o \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c++", "variants":
[
{
"name": "Run",
"shell_cmd": "g++ -Wall -std=c++11 \"${file}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""
}
]
}

5.Snippets

点击Tools->New Snippet之后,会新建一个文件,内容如下:

<snippet>
<content><![CDATA[
Hello, ${1:this} is a ${2:snippet}. //这里输入你想要键入的代码~
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<!-- <tabTrigger>hello</tabTrigger> --> //这里把hello换成你想要使用的快捷键。
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>source.python</scope> --> //这里选择起作用的文件类型
</snippet>

设置完毕之后,Ctrl+S保存,默认会保存在User文件夹下,为了方便管理,不妨新建一个Snippet文件夹,后缀名为.sublime-snippet。保存好之后,就可以使用啦~ 用我自己的一个Snippet文件举例:

同样保存配置,文件名格式:xx.init.sublime-snippet。保存后也是可以在Preference->Browse Package->user文件夹中找到。

Sublime Text自带的snippet可以在sublime text安装目录->Packages中找到。

C++为例:

C:\Program Files\Sublime Text 3\Packages\c++.sublime-package

把后缀名改成:c++.zip即可用压缩文件打开。里面就有Sublime自带的snippet,用sublime text打开修改即可。修改完毕之后记得把.zip改回.sublime-package

<snippet>
<content>
<![CDATA[
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
void solve() {
$1
}
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
solve();
return 0;
}
]]>
</content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>qq</tabTrigger>
<description>单组输入</description> //描述信息,可选
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<scope>source.c, source.c++</scope>
</snippet>

这样在我敲下 qqTab 以后会自动将qq转换成我预先设定的代码。

关于代码里的 $1 代表转换代码以后输入光标所在位置,同样的可以设置 $2 为在按下 Tab 以后跳转的位置

5.备份

配置到现在,Sublime也算用的顺手了,要是换一台电脑都得这么捣鼓一下,肯定得疯。所以下面介绍一下如何同步自己的Sublime配置——只要备份Packages\User文件夹即可,里面的sublime-settings文件都保存了你的所有设置,更换电脑之后,只要恢复过去,打开Sublime的时候会自动检测,下载并安装你需要的包。

Windows下备份文件夹:

C:\Users\yourusername\AppData\Roaming\Sublime Text 3\Packages\User

6.后记

VS Code 很香,但作为一个追求简洁和敲代码敲个爽的蒟蒻决定放弃 VS Code(尽管效率真的很高)开始捡回 Sublime Text,不管不顾的决定把它改造成一个超级适应我的的IDE,所以,走你~~

7. 参考

将Sublime Text打造为轻量级的C++ IDE的更多相关文章

  1. QuickXdev+sublime text打造quick-cocos2d-x开发环境

    Sublime 插件安装方法: 一.简单的安装方法 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: import urllib.request, ...

  2. Sublime Text3打造U盘便携Lua IDE

    下载Sublime Text  链接http://www.sublimetext.com/3 我下载的是win32 portable 版 便于放入U盘携带 解压 注冊: 能够复制下面部分直接贴入注冊栏 ...

  3. Sublime Text使用配置介绍

    这篇文章很多内容都是来源自网络,发布这里当作自己留个底,以后不用到处去找 对于文本编辑器,我用过notepad2.notepad++.Editplus.UltraEdit.Vim.TextPad,都没 ...

  4. 翻译:打造基于Sublime Text 3的全能python开发环境

    原文地址:https://realpython.com/blog/python/setting-up-sublime-text-3-for-full-stack-python-development/ ...

  5. 打造自己的sublime text

    博主今天正在了解学习LESS,在找相关资源的过程中,发现自己的sublime text和别人差别有点大,突然脑海中一股逼格的气息油然而生,于是查找了相关资料,并打造了一下风格. 下面开始正文. 首先是 ...

  6. 使用Sublime text 3打造一个小巧但强大的Go语言开发IDE

    版权声明:欢迎转载,转载请注明出处! https://blog.csdn.net/iTaacy/article/details/76716049 使用Sublime text 3打造一个小巧但强大的G ...

  7. 打造一款便携版的Sublime Text

    https://segmentfault.com/a/1190000000707661 https://www.cnblogs.com/52cik/p/sublime-diy.html 直接安装Sub ...

  8. Sublime Text增加Build system类型,打造一个全能IDE

    Sublime text2是一款非常方便的文本编辑器,现在我基本上不用IDE去编写代码,一般都是在Sublime text2中编辑,当然,这里无法执行.debug是软肋,于是上网找了下资料,可以把添加 ...

  9. Windows下打造Sublime Text + Tex Live环境

    一直在用Sublime Text + ctex集成环境编写Latex文档,最近发现ctex套件内嵌的MiKTeX包管理器功能太弱了,遂将目标转向了功能更加强大的Tex Live环境. 首先安装Tex ...

  10. Sublime Text 使用介绍、全套快捷键及插件推荐

    开篇:如果说Notepad++是一款不错Code神器,那么Sublime Text应当称得上是神器滴哥.Sublime Text最大的优点就是跨平台,Mac和Windows均可完美使用:其次是强大的插 ...

随机推荐

  1. 轻松应对复杂集成场景!用友U8API开发适配

    在企业上云的大趋势下,U8+ 全面转向互联网方向,深入融合云应用,一站式提供财务.营销.制造.采购.设计.协同.人力等领域的"端 + 云"服务,并通过软硬一体化.产业链协同的策略全 ...

  2. [CF1168C] And Reachability

    And Reachability 题面翻译 题目描述 Toad Pimple 有一个整数数组 \(a_1,\dots,a_n\). 当 \(x < y\) 且存在 \(x = p_1 < ...

  3. [ABC274F] Fishing

    Problem Statement On a number line, there are $N$ fish swimming. Fish $i$, which has a weight of $W_ ...

  4. python tkinter使用(四)

    python tkinter使用(四) 本篇文章主要讲下tkinter 的文本框相关. tkinter中用Entry来实现输入框,类似于android中的edittext. 具体的用法如下: 1:空白 ...

  5. 若依集成knife4j实现swagger文档增强

    若依集成knife4j实现swagger文档增强 本期全是干货,这里我就当你用的非常熟练了,在ruoyi-admin模块中pom文件里加入以下依赖 注:引用knife4j-spring-boot-st ...

  6. APP性能测试-客户端性能测试

    https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318

  7. Python——第四章:内置函数(下)

    内置函数的使用方法: locals:函数会以字典的类型返回当前位置的所有局部变量 globals:函数会以字典的类型返回全部局部变量 zip: 可以把多个可迭代内容进行合并 sorted: 排序 fi ...

  8. 太赞了!墙裂推荐这款网页版 Nginx 配置生成器,好用到爆!

    之前民工哥也给大家介绍过一款Nginx配置生成器:强大!Nginx 配置在线一键生成"神器",不太了解的人可以去看一看. 最近民工哥又发现一款好用的网页版开源工具,同样它的功能也是 ...

  9. JavaFx之从controller关闭stage(十八)

    JavaFx之从controller关闭stage(十八) 开发时,我们需要从controller的button时间中关闭当前,那么你的按钮事件可以这样: @FXML public Button ca ...

  10. CSS3学习笔记-句子排版效果

    CSS3提供了丰富的排版效果,可以通过样式属性来控制文本的排列方式.字体样式.行高.字间距等.以下是一些常用的句子排版效果示例: 文本对齐方式: .text-center { text-align: ...