被 $Sublime$ 的颜值所吸引,于是想配置一下来写代码,其中也遇到了一些问题,以此记录。
首先下载 $sublime text 3$并安装;
配置编译环境:
我之前是安装的$MinGW$,但是一直存在编译时 %lld 会报错 或者 无法声明 $string$ 变量,请教了某聚聚之后改用了 $MinGW64$ 就解决了之前的问题
先下载 $MinGW64$并安装,下载链接
如果在线安装出现问题,就可以直接下载离线压缩包,下载链接 ,并解压(我是将其放在了C盘根目录),然后将 C:\mingw64\bin 添加至环境变量;
然后打开 $sublime$ , 顶部导航栏 Tools -> Build System -> New Build System,然后更改为以下代码并保存为C++11;并在 Build System 中选择更改保存的 C++11;
{ "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": "Run", "shell_cmd": "g++ -Wall \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\"" } ] }
然后我们新建一个cpp文件(注意新建时要加文件类型后缀),写一个 " Hello world " ,并按 F7 编译并运行,然后就成功了。
插件安装:
先按下组合键 Ctrl + ~ 然后输入以下代码并回车
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)
按下组合键 Ctrl + shift + P , 并输入 pci 回车,就可以安装拓展插件了
之前一直很好奇别人是怎么在代码前面插入时间戳的,之后发现 sublime 也可以通过 File Header 插件实现;
我们安装好了 File Header 之后, 顶部导航栏 Preferences -> Browse Packages -> FileHeader -> template -> header -> c++.tmpl 并用sublime 打开,编辑相应的模块并保存就可以了,也可以自定义增加一些东西,电子邮箱,个人签名之类的;
然后我们新建一个 cpp 文件,就会出现 自己的 ID 和时间戳了,是不是很炫酷 ; (逃~
其他技巧:
更改快捷键:
因为之前一直用的 CodeBlocks ,习惯了 F9 的快捷键,就想把 sublime 的快捷键也改一改;
顶部导航栏 Perferences -> Key Bindings 然后我们 Ctrl + F 搜索一下 " f7"
然后我们将这个语句复制下来粘贴到右边的 user 中,把快捷键修改为 f9 并保存,就设置成功了。
添加代码片段:
每次写题都要自己敲头文件和define这些感觉很麻烦,之前codeblock可以 code defult 自动生成,sublime 也可以通过添加代码片段实现;
顶部导航栏 Tools -> Developer -> New Snippet , 将下面的代码复制粘贴并保存为acm就可以了,中间部分可以更改为自己的板子
<snippet> <content> <![CDATA[ #include<bits/stdc++.h> using namespace std; #define X first #define Y second #define eps 1e-2 #define gcd __gcd #define pb push_back #define PI acos(-1.0) #define lowbit(x) (x)&(-x) #define bug printf("!!!!!\n"); #define mem(x,y) memset(x,y,sizeof(x)) typedef long long LL; typedef long double LD; typedef pair<int,int> pii; typedef unsigned long long uLL; const int maxn = 1e5+2; const int INF = 1<<30; const int mod = 1e9+7; void solve(){ return; } int main() { // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); // ios::sync_with_stdio(false); int t = 1; //scanf("%d",&t); while(t--){ // printf("Case %d: ",cas++); solve(); } return 0; }]]> </content> <!-- Optional: Set a tabTrigger to define how to trigger the snippet --> <tabTrigger>acm</tabTrigger> <!-- Optional: Set a scope to limit where the snippet will trigger --> <scope>source.c++</scope> </snippet>
然后我们新建一个 cpp 文件,输出 acm 并回车 就会出现保存好的板子了。
还有很多新功能待发现,未完待续...