Unverified Commit 53d040c2 authored by ir1d's avatar ir1d
Browse files

style: minor fix on style, add new page for editors

parent 610801fd
Loading
Loading
Loading
Loading
+19 −80
Original line number Diff line number Diff line
## 评测软件

很多时候,你拿到了一套题,想要在本地测试一下自己能得多少分,这时候就需要评测软件了。

### Cena

Cena 是由刘其帅和李子星使用 Pascal 语言编写的开源评测工具,是流传最广泛的本地评测工具。Cena 最初开源于 Google Code 平台,由于不明原因 Google 删除了 Cena 项目,目前可以在 [Web Archive](https://web.archive.org/web/20131023112258/http://code.google.com/p/cena/) 上找到 Cena 的官网。

Cena 的源代码可以在[这里](https://github.com/billchenchina/cena)找到。

### Lemon

Lemon 是 zhipeng-jia 写的开源的评测工具,地址在:[zhipeng-jia/project-lemon](https://github.com/zhipeng-jia/project-lemon)

Ir1d 提供了一份 linux 下编译好的版本在 [Project_lemon](https://github.com/FreestyleOJ/Project_lemon/tree/Built)

Menci 提供了一份更新的版本在 [Menci/Lemon](https://github.com/Menci/Lemon/)

#### 自行编译

```bash
sudo apt update
sudo apt install qt5-default build-essential git -y
git clone --depth=1 http://github.com/menci/lemon.git
cd lemon
# 可以修改 make 文件来调整 make job 的线程数
sed -i 's/make $/make -j 1 $/g' make
./make
cp Lemon ~
cd ..
```

#### 数据格式

首先打开 lemon 选择新建试题,而后打开新建试题的文件夹

题目和数据应该如以下格式所示
```
├── data
│   ├── gendata.py
│   ├── product
│   │   ├── product100.in
│   │   ├── product100.out
│   │   ├── product10.in
│   │   ├── product10.out
│   │   ├── product11.in
...
```

当所有试题添加完成后,回到 lemon 选择自动添加试题

此时你的题目和数据点应该都显示在 lemon 当中了



### Arbiter

Arbiter 为北京航空航天大学为 NOI Linux 开发的评测工具,现已用于各大 NOI 系列程序设计竞赛的评测。


## 各大编辑器
### Vim -- 编译器之神
#### 历史与争端
## Vim -- 编译器之神
### 历史与争端
Vim 的前身是 vi,一个简洁但是略有不足的编译器,但是从 vi 开始,编辑器的模式区分和唯快不破的思想就已经体现的很到位了。Vim 即是 vi improved,是在 vi 原本所有的方式上进行的进一步提升,但是并不会改变 vi 的其他本质,只是增加了更多适应如今需要的一些功能。

vi 于1976年诞生,与 emacs 不分先后,两者因其快捷的编辑被奉为神器,甚至使用者们还有爆发过“圣战”,即是 神的编译器 emacs VS 编译器之神 Vim,但是当然分不出结果,因为各有优劣。但它们共有的特点就是高度的扩展性与高度的可定制性以及快捷方便的使用。
vi 于1976年诞生,与 Emacs 不分先后,两者因其快捷的编辑被奉为神器,甚至使用者们还有爆发过“圣战”,即是 `神的编译器 Emacs` VS `编译器之神 Vim`,但是当然分不出结果,因为各有优劣。但它们共有的特点就是高度的扩展性与高度的可定制性以及快捷方便的使用。

Vim 的模式区分是一个很有意思的设定,普通模式与插入模式是最主要常用的模式,普通模式下的每个键都是命令,这便是 Vim 不同于 emacs 的地方,若是习惯了 Vim 的模式之间的切换,大部分都是单个键的命令必然比 emacs 的无限 Ctrl 会更高效,虽然 Vim 的小容量注定比不了 emacs “操作系统”这个东西那么万能,但是论快而言,Vim 是无可争议的顶尖编辑器。
Vim 的模式区分是一个很有意思的设定,普通模式与插入模式是最主要常用的模式,普通模式下的每个键都是命令,这便是 Vim 不同于 Emacs 的地方,若是习惯了 Vim 的模式之间的切换,大部分都是单个键的命令必然比 Emacs 的无限 Ctrl 会更高效,虽然 Vim 的小容量注定比不了 Emacs “操作系统”这个东西那么万能,但是论快而言,Vim 是无可争议的顶尖编辑器。

Vim 有丰富的插件扩展,这点显然是比配置更迷人的存在。有这些扩展性存在,Vim 成为一个IDE也不会是不可能的事情。

@@ -79,7 +18,7 @@ Vim 是一款非常优秀的文本编辑器,但由于其陡峭的学习曲线

![](./images/horrorstories.txt.jpg)

#### 安装
### 安装

一般的话,linux 系统都是会自带 Vim 的,打开终端输入 `vim` 即可启用。

@@ -113,7 +52,7 @@ vim 文件路径
```
可以直接编辑文件。

### 编译
## 编译
编译的话,先要安装 g++,命令如下:
```bash
sudo apt-get install g++
@@ -127,20 +66,20 @@ g++ filename.cpp -o filename

一键编译运行的配置在配置篇给出。

### 基础篇
## 基础篇

分模式来吧。

##### 插入模式(insert)
### 插入模式(insert)
插入模式的知识点其实没有太多,输入才是主职是伐。

首先,从普通模式如何进入插入模式呢?有数个命令:`i``a``A``o`。前两个差别不大,`i` 是在光标当前位置进行写代码,`a` 是往后挪一个字符写代码。`A` 是移动到当前行尾进行插入,`o` 是在行尾添加换行符并在下一行插入。

而如何返回普通模式?当然是  <kbd>esc</kbd> 啦。但是,Vim 的插入与普通模式切换异常频繁,而 `esc` 又太远了,有什么办法呢?Vim 还提供了 <kbd>Ctrl</kbd> + <kbd>[</kbd> 的快捷键来返回普通模式,是否近多了呢?
而如何返回普通模式?当然是 <kbd>Esc</kbd> 啦。但是,Vim 的插入与普通模式切换异常频繁,而 <kbd>Esc</kbd> 又太远了,有什么办法呢?Vim 还提供了 <kbd>Ctrl</kbd> + <kbd>[</kbd> 的快捷键来返回普通模式,是否近多了呢?

虽说能够熟练了后,切换模式不再是问题,但是其实有的时候我们只是需要进入普通模式下按一次小命令,来回切换又显得浪费了一点点时间。而 Vim 又提供了插入-普通模式来避免这一尴尬的问题。在插入模式下,只需要按 <kbd>Ctrl</kbd> + <kbd>o</kbd> 即可进入此模式,当进行完一次操作后又会自动回到插入模式。这样岂不是更省时间?

##### 普通模式(normal)
### 普通模式(normal)
Vim 的命令大部分都是在普通模式下完成的,普通模式下可不能乱按,可以说每个键都是命令。
```
首先是 hjkl 四个方向键。                         
@@ -173,7 +112,7 @@ asdasdasd

常用命令大概就这些了......

##### 命令行模式
### 命令行模式
其实这并不能称作是一个模式= =。

普通模式下只需要按 : 下方就会蹦出命令框框,输入相关命令即可。如 Vim 在线帮助文档,输入 `:help` 即可,如果看不懂英文......请下载 Vim 用户手册中文,或者移步插件篇。
@@ -184,7 +123,7 @@ asdasdasd

然后是很强大的命令 `:s/A 串/B 串/` 作用是把指定范围内的所有 A 串替换成 B 串。想象一下题写完了,但是发现没开 long long 的时候,完全不绝望有没有,一个小命令,妙不可言。

##### 可视模式
### 可视模式
可视模式的作用总结起来大概就是选中高亮,但是块状的可视模式可以干更多的事情,不过太麻烦了,对于新人来说大概会脑阔疼。

普通模式下按 `v` 即可进入可视模式,`hjkl` 可以移动高亮选区某一头,如果发现反了或者你进入可视模式的时候是在想要选中区域的中间位置,不用急着退出重进,更不用花时间又移回去,只需要按`o`即可切换活动端,操作高亮选区的另一头。或者用鼠标也不是不行啦......
@@ -201,8 +140,8 @@ vimtutor
```
即可进入教程,二三十分钟你就能掌握基础了,但应当加以练习才能彻底掌握。

#### 插件篇
基础篇里说过,Vim 与 emacs 之所以能成为两大巅峰的神器是因为其高度的扩展与可定制性,而最能体现这一特性的就是插件了。它们是最有魅力的一部分,是最令你无法抗拒的组成。
## 插件篇
基础篇里说过,Vim 与 Emacs 之所以能成为两大巅峰的神器是因为其高度的扩展与可定制性,而最能体现这一特性的就是插件了。它们是最有魅力的一部分,是最令你无法抗拒的组成。

虽然考场上基本上不能用插件,但是日常的学习中,插件将对你的效率有很大的提高,而且一些插件的部分功能可以通过 Vim 自带实现以及配置实现。

@@ -217,7 +156,7 @@ filetype plugin on

Vundle 可以很轻松的管理插件,只需要在配置中写一下,并在 Vim 中执行`:PluginInstall`命令,就可以自动从 github 上拉取插件,当然也拉取不了 github 上没有的= =。而如果不想用了什么插件也无须删去,在配置中注释掉那个插件的相关就行了。具体配置请移步配置篇,此处将会详细介绍我的各个插件。

##### 文件管理
### 文件管理
使用 Vim 的时候打开文件显然毫不方便,不论是在目标文件夹下利用
```bash
vim filename
@@ -242,7 +181,7 @@ set autochdir
```
它的作用是会自动把工作目录移动到当前编辑文件所在目录。

##### 美化界面
### 美化界面
首先就是那行白乎乎的状态栏,显示的信息还不够多,也不好看对吧。显示的信息是可以在配置中写的,请移步配置篇。但是不好看的问题怎么解决呢?这个时候就轮到了 airline 插件出马了,不多说,放两张图自然明白。

![airline1](./images/airline1.png)
@@ -251,10 +190,10 @@ set autochdir

然后,其实我们的 nerdtree 插件也是可以美化的,同时多安装一个小插件和一点配置即可达到美化效果,具体请移步配置篇食用。

##### 启动界面
### 启动界面
这个其实可有可无,是一个能快捷键打开历史记录的一个插件 vimplus-startify,具体可以自己尝试。

##### 小方便性插件
### 小方便性插件
commentary :快捷键`gc`注释选中行,`gcu`撤销上次注释。

syntastic :`:w`保存时提示语法错误,需配置中设置。
@@ -267,6 +206,6 @@ delimitMate : 括号补全功能。同时考试中可用配置实现部分功

vimcdoc :汉化 Vim 在线文档。

vimim :这个的安装不在配置中,相当于 Vim 自带中文输入法,需在 .vim 中创建文件夹 Plugin 并把 [从这里](https://www.vim.org/scripts/download_script.php?src_id=23122) 下得的文件扔入此文件夹中即可。打开 Vim 并进入插入模式,按下 <kbd>Ctrl</kbd> + <kbd>/</kbd> 即可启用。
vimim :这个的安装不在配置中,相当于 Vim 自带中文输入法,需在 `.vim` 中创建文件夹 Plugin 并把 [从这里](https://www.vim.org/scripts/download_script.php?src_id=23122) 下得的文件扔入此文件夹中即可。打开 Vim 并进入插入模式,按下 <kbd>Ctrl</kbd> + <kbd>/</kbd> 即可启用。

一切插件的安装写法及快捷键及配置皆在配置篇中,请移步。

docs/intro/judgers.md

0 → 100644
+55 −0
Original line number Diff line number Diff line
很多时候,你拿到了一套题,想要在本地测试一下自己能得多少分,这时候就需要评测软件了。

## Cena

Cena 是由刘其帅和李子星使用 Pascal 语言编写的开源评测工具,是流传最广泛的本地评测工具。Cena 最初开源于 Google Code 平台,由于不明原因 Google 删除了 Cena 项目,目前可以在 [Web Archive](https://web.archive.org/web/20131023112258/http://code.google.com/p/cena/) 上找到 Cena 的官网。

Cena 的源代码可以在[这里](https://github.com/billchenchina/cena)找到。

## Lemon

Lemon 是 zhipeng-jia 写的开源的评测工具,地址在:[zhipeng-jia/project-lemon](https://github.com/zhipeng-jia/project-lemon)

Ir1d 提供了一份 linux 下编译好的版本在 [Project_lemon](https://github.com/FreestyleOJ/Project_lemon/tree/Built)

Menci 提供了一份更新的版本在 [Menci/Lemon](https://github.com/Menci/Lemon/)

### 自行编译

```bash
sudo apt update
sudo apt install qt5-default build-essential git -y
git clone --depth=1 http://github.com/menci/lemon.git
cd lemon
 可以修改 make 文件来调整 make job 的线程数
sed -i 's/make $/make -j 1 $/g' make
./make
cp Lemon ~
cd ..
```

### 数据格式

首先打开 lemon 选择新建试题,而后打开新建试题的文件夹

题目和数据应该如以下格式所示
```
├── data
│   ├── gendata.py
│   ├── product
│   │   ├── product100.in
│   │   ├── product100.out
│   │   ├── product10.in
│   │   ├── product10.out
│   │   ├── product11.in
...
```

当所有试题添加完成后,回到 lemon 选择自动添加试题

此时你的题目和数据点应该都显示在 lemon 当中了

## Arbiter

Arbiter 为北京航空航天大学为 NOI Linux 开发的评测工具,现已用于各大 NOI 系列程序设计竞赛的评测。
+3 −1
Original line number Diff line number Diff line
@@ -19,7 +19,9 @@ nav:
    - Getting Started: index.md
    - OI 赛制简介: intro/mode.md
    - 学习资源: intro/resources.md
    - 工具软件: intro/softwares.md
    - 工具软件: 
      - 评测工具: intro/judgers.md
      - 编辑工具: intro/editors.md
    - 关于本项目: intro/about.md
    - F.A.Q.: intro/faq.md
  - 基础部分: