Sublime on NOI Linux
由于 NOI Linux 内软件全国统一,我想通过该博客讲述一下如何快速使用 NOI Linux 中的 Sublime Text。
观前提醒:如果您要在赛场上使用,需要背一下 json 文件,懒得背的可以左转 Code::Blocks 或者 Geany 了。
1. 配置编译系统
由于赛时没有网络,Sublime Text 是英文界面,但是稍微是个初中生就可以看懂。
点击 Tools-> Build System -> New Build System,然后看到空白的 json 文件不要慌张。
打开文件资源管理器,点击其他位置->计算机,注意需要打开显示隐藏文件:
然后进入 根目录/opt/sublime-text 文件夹,这里就是 sublime 的安装位置。
然后进入 Packages 文件夹,找到 C++.sublime-package 文件,直接双击打开。
这其实是一个压缩包,然后找到 C++ Single File.sublime-build 文件。
双击打开:
直接复制该文件内容到 sublime 你新建的 build system 中。
将 variants 中 'shell_cmd' 一栏中的指令改为:
x-terminal-emulator -e bash -c \" g++ '${file}' -o '${file_path}/${file_base_name}' ; '${file_path}/${file_base_name}' ; read -p '\n--------------\nPress Any command to continue...'\"
个人认为这串代码还是比较好记的。
\n--------------\nPress Any command to continue... 是可以自定义的,表示按任意键继续。
然后在 g++ '${file}' -o '${file_path}/${file_base_name}' 后也是可以添加其他编译选项的,比如:std=c++14,-fsanitize=address,undefined,-Wall,-O2。
然后保存即可,文件名自定义,注意检查是不是保存到的
/home/${Your_Computer_Name}/.config/sublime-text/Packages/User 路径上。
然后此时按下 ctrl + shift + b,然后选择 ${Your_Build_system_name}_Run 就可以编译并运行代码了。
以下是笔者的配置:
{
"shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c++",
"variants":
[
{
"name": "Build & Run",
"shell_cmd": "x-terminal-emulator -e bash -c \" g++ '${file}' -o '${file_path}/${file_base_name}' ; '${file_path}/${file_base_name}' ; read -p '\n--------------\nPress Any command to continue...'\""
},
{
"name": "Build",
"shell_cmd": "g++ '${file}' -o '${file_path}/${file_base_name}' "
},
{
"name": "Run",
"shell_cmd": "x-terminal-emulator -e bash -c \" '${file_path}/${file_base_name}' ; read -p '\n--------------\nPress Any Command to Continue...'\""
}
]
}
2. 更改快捷键
Preferences->Key-Binding 打开快捷键配置页面。
在左侧 system-setting 中 Ctrl + f 查找 build 或 ctrl+shift+b。
然后复制到右侧 user-setting 中,
将 args 花括号内内容修改为:
{
"variants": "Run"
//如果你没有在创建Build system 的时候修改 variants 中 name 的值的话,默认是 Run,否则将你修改的值复制过来即可。
}
然后将 "key" 后面的字符串修改为你喜欢的键位即可。
这是笔者的配置:
[
{
"keys": ["f5"],
"command": "build",
"args": {
"variant": "Build & Run"
}
}
]
这里还有一些 Sublime 常用快捷键,也可以通过 Ctrl + f 查找然后复制到 user-setting 中,修改键位。
以下是Sublime默认键位
-
Ctrl + Shift + K: 删除行。 -
Ctrl + Shift + D: 复制行。 -
Ctrl + Enter: 在当前行下方插入一行。 -
Ctrl + Shift + Enter: 在当前行上方插入一行。 -
Ctrl + F: 查找文本。- 下方状态栏,有六个开关,一般建议打开 whole word 和 wrap。
-
Ctrl + H: 替换文本。- 同查找,在下方填写要替换为的文本即可。
-
F11: 全屏模式。- dev 转 sublime 推荐将此改为其他键位,将编译改为
F11。
- dev 转 sublime 推荐将此改为其他键位,将编译改为
3. 杂项设置
-
Sublime 自带的补全并不好用,可以通过
Preferences->Setting中在右侧User-setting 中添加"auto_complete": false,以关闭代码补全。 -
还有如果觉得默认字体不好看,可以通过
Preferences->Setting中在右侧User-setting 中添加"font_face": "${font_name}",以更改字体,这里推荐Monospace。
4. 附上一份 Linux 上的对拍代码
#include <bits/stdc++.h>
using namespace std;
signed main() {
int tmp = 0;
while(1) {
cout << "#Test " << ++ tmp << ": ";
system("./data > input.in");
system("./good < input.in > good.out");
system("./bad < input.in > bad.out");
if(system("diff good.out bad.out")) {
cout << "Wrong Answer\n";
return 0;
} else {
cout << "Accept\n";
}
}
return 0;
}