专栏文章

【重制】如何在 NOI 系列比赛中使用 Sublime Text

科技·工程参与者 32已保存评论 34

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
34 条
当前快照
1 份
快照标识符
@mingsshe
此快照首次捕获于
2025/12/02 02:10
3 个月前
此快照最后确认于
2025/12/02 02:10
3 个月前
查看原文

【重制】如何在 NOI 系列比赛中使用 Sublime Text

现在搞一个重置版。
Sublime Text 是一个强大文本编辑器。
是一个付费软件,但可以无限试用(喜
NOI Linux 2 默认安装。
首先在 NOI Linux 里找到这个橙黑配色的软件,打开。
然后应该会显示滚木:
然后直接在里面写代码,这时候会发现没有高亮,这是因为 sublime text 不知道你在写什么语言。

高亮显示

方法一

点击右下角,切换成 c++

方法二

保存为 cpp 后缀的文件,sublime text 就知道这是 c++ 了,直接高亮。

方法三

Ctrl + Shift + P 调出工具栏,输入 c++,选择 Set Syntax: C++
然后就能写代码了!
代码功能很多,这里不多赘述,可以看百度百科

运行代码

写好代码后怎么运行呢?

方法一:命令行

命令行里编译运行:
不会 gcc 的话也是可以百度百科
这样的话比较安全,加上了 -std=c++14 -O2 与评测保持一致。

方法二:Sublime Text 默认编译

Tools -> Build 里面,也可以使用快捷键 Ctrl + Shift + B,一个是编译,一个是编译加运行。
但是这种方法不能加编译命令 -std=c++14 -O2 不是很安全。

方法三:自定义构建系统。

我们就要更改其默认的编译指令,但是不能直接更改,需要建一个新的。
进入 Sublime Text 安装目录中的包文件夹 /opt/sublime_text/Packages 默认编译就在这里面。
找到 C++.sublime-package,复制出来,并解压,找到 C++ Single File.sublime-build,这个就是编译文件。
然后点击 Tools -> Build -> New Build System,会弹出来一个文件,把 C++ Single File.sublime-build 粘贴进去,加入自定义编译和命令:
JSON
{
	"shell_cmd": "g++ \"${file}\" -O2 -std=c++14 -o \"${file_path}/${file_base_name}\"",
	"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
	"working_dir": "${file_path}",
	"selector": "source.c++",

	"variants":
	[
		{
			"name": "Run",
			"shell_cmd": "ulimit -s 114514 && g++ \"${file}\" -O2 -std=c++14 -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
		}
		,
		{
			"name": "Debug",
			"shell_cmd": "g++ \"${file}\" -g -O2 -std=c++14 -o \"${file_path}/${file_base_name}\""
		}
	]
}
然后保存为 g++.sublime-build
然后 Ctrl + Shift + B 就有新的自定义编译了。
其中,在 Sublime Text 里编译的话能在对应的行显示 Error 和 Warning。
然后注意一下 Sublime Text 里面的命令行里输入流有问题,推荐文件读写!

视图

Alt + Shift + 2 能分出两个代码区域:
Alt + Shift + 3 是分三个,Alt + Shift + 4 是分四个(1x4),Alt + Shift + 5 也是是分四个(2x2),Alt + Shift + 1 是初始状态一个。
同时,分出两个后在右边进行 Ctrl + K , Ctrl + up 还能分:
这时候就能左边代码,右边是 in 和 out。
有关 sublime text 的考场技巧就差不多了,
其他就是一些 sublime text 和 linux 的使用问题。
在 sublime text 上面的工具栏可以发现有很多功能,和对应的快捷键。
Ctrl + Shift + P 快捷调用各种命令。

神秘功能 Find in Files

Ctrl + Shift + F 调出 Find in Files,可以在一个目录里搜索。
比如考场上忘记了 tree 怎么写,就可以:
而且这个速度极快。

神秘快读

忘记快读怎么办?
键入 read,然后就能发现补全里有个模板 Read File Into Vector
CPP
std::vector<char> v;
if (FILE *fp = fopen("filename", "r"))
{
	char buf[1024];
	while (size_t len = fread(buf, 1, sizeof(buf), fp))
		v.insert(v.end(), buf, buf + len);
	fclose(fp);
}
这个有点废空间,可以稍作修改,比如:
CPP
namespace IO {
	char buf[1024], * p1 = buf, * p2 = buf;
	inline char gc() {
		if(p1 == p2) {
			p2 = buf + fread(buf, 1, sizeof buf, stdin);
			p1 = buf;
		}
		return p1 == p2 ? EOF : * p1 ++;
	}
}
(修改的貌似有点多(至少知道 fread 怎么用了吧

评论

34 条评论,欢迎与作者交流。

正在加载评论...