Unverified Commit b9333443 authored by 洛水·锦依卫's avatar 洛水·锦依卫 Committed by GitHub
Browse files

Update softwares.md

parent 9607d06a
Loading
Loading
Loading
Loading
+50 −37
Original line number Diff line number Diff line
@@ -61,42 +61,42 @@ Arbiter 为北京航空航天大学为 NOI Linux 开发的评测工具,现已
## 各大编辑器
### Vim -- 编译器之神
#### 历史与争端 (emm 跟战争似的)
vim 的前身是 vi,一个简洁但是略有不足的编译器,但是从 vi 开始,编辑器的模式区分和唯快不破的思想就已经体现的很到位了。vim 即是 vi improved,是在 vi 原本所有的方式上进行的进一步提升,但是并不会改变 vi 的其他本质,只是增加了更多适应如今需要的一些功能。
Vim 的前身是 vi,一个简洁但是略有不足的编译器,但是从 vi 开始,编辑器的模式区分和唯快不破的思想就已经体现的很到位了。Vim 即是 vi improved,是在 vi 原本所有的方式上进行的进一步提升,但是并不会改变 vi 的其他本质,只是增加了更多适应如今需要的一些功能。

vi 于1776年诞生,与 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也不会是不可能的事情。
Vim 有丰富的插件扩展,这点显然是比配置更迷人的存在。有这些扩展性存在,vim 成为一个IDE也不会是不可能的事情。

但是,vim 的初始学习注定是艰难的,因为其与多数主流操作不同的方式令稍懒的新手望而却步,这需要时间来适应但当度过最开始的不适应期之后,vim 就再无难度,你会慢慢上瘾,不断优化你的配置,寻找新的更好用的插件。开始的过程就像是铸剑,之后的过程就像是与剑的更好的磨合,然后在剑中逐渐注入你的灵魂,这样它就成为了你最好的利器,令你无法割舍。乃至你会自己写适合自己的插件,就像是自创剑法,而不像是从别人那里借来剑法,杂七杂八融为一炉。
但是,Vim 的初始学习注定是艰难的,因为其与多数主流操作不同的方式令稍懒的新手望而却步,这需要时间来适应但当度过最开始的不适应期之后,vim 就再无难度,你会慢慢上瘾,不断优化你的配置,寻找新的更好用的插件。开始的过程就像是铸剑,之后的过程就像是与剑的更好的磨合,然后在剑中逐渐注入你的灵魂,这样它就成为了你最好的利器,令你无法割舍。乃至你会自己写适合自己的插件,就像是自创剑法,而不像是从别人那里借来剑法,杂七杂八融为一炉。

有人说了这样一句话:

vim 是一款非常优秀的文本编辑器,但由于其陡峭的学习曲线,很多人还没开始学就放弃了,所以他们无法领悟 vim 唯快不破的设计思想和精巧的使用体验。
Vim 是一款非常优秀的文本编辑器,但由于其陡峭的学习曲线,很多人还没开始学就放弃了,所以他们无法领悟 vim 唯快不破的设计思想和精巧的使用体验。

附一张图,论各大编辑器的学习曲线,纵坐标代表掌握知识量及难度,横坐标代表使用的熟练程度与完成任务的效率。我们可以看到,vim 的曲线岂止陡峭,都垂直了...... 但是开始过去后,是平稳的提升,只要度过开始的阶段,vim 的学习将再无阻碍,一路直上有没有。
附一张图,论各大编辑器的学习曲线,纵坐标代表掌握知识量及难度,横坐标代表使用的熟练程度与完成任务的效率。我们可以看到,Vim 的曲线岂止陡峭,都垂直了...... 但是开始过去后,是平稳的提升,只要度过开始的阶段,vim 的学习将再无阻碍,一路直上有没有。

![](https://github.com/LuoshuiTianyi/OI-wiki/blob/master/docs/intro/images/horrorstories.txt.jpg?raw=true)

#### 安装

一般的话,linux 系统都是会自带 vim 的,打开终端输入 vim 即可启用。即:
```
一般的话,linux 系统都是会自带 Vim 的,打开终端输入 vim 即可启用。即:
`bash
vim
```
vim 依附于终端,所以调整终端设置也可以达到美化效果。
`
Vim 依附于终端,所以调整终端设置也可以达到美化效果。

但是自带的 vim 很容易有功能残缺,比如有的就不能与系统剪切板交互(将会在效率篇讲解),各种未开启支持。那么这时候我们就需要手动安装,方法有二。第一步先是卸载 vim,命令如下:
```
但是自带的 Vim 很容易有功能残缺,比如有的就不能与系统剪切板交互(将会在效率篇讲解),各种未开启支持。那么这时候我们就需要手动安装,方法有二。第一步先是卸载 Vim,命令如下:
`bash
sudo apt-get remove vim
```
`
然后安装有两种做法,一是使用命令安装,但我无法确定软件源的版本有没有问题= =。
```
`bash
sudo apt-get install vim
```
做法二,先到[https://github.com/vim/vim/archive/v8.1.0338.tar.gz] 下载源码包,然后解压,并进入解压后的文件夹,并打开终端,cd 至文件夹路径,并依次输入如下命令:
```
`
做法二,先到[https://github.com/Vim/vim/archive/v8.1.0338.tar.gz]下载源码包,然后解压,并进入解压后的文件夹,并打开终端,cd 至文件夹路径,并依次输入如下命令:
```bash
./configure
make
sudo make install
@@ -104,19 +104,32 @@ sudo make install
make 的过程可能稍久,淡定点等。

最后在终端输入
```
`bash
vim
```
就跳出了那个帮帮乌干达的可怜儿童啥的,按 a 或 i 键开始编辑新文件吧。
`
就跳出了那个帮帮乌干达的可怜儿童啥的,按 `a``i` 键开始编辑新文件吧。

或者要打开某个文件的话就可以
```
或者要打开某个文件的话就可以在终端中
`bash
vim 文件路径
```
`
可以直接编辑文件。

### 编译
编译的话,先要安装g++,命令如下:
`bash
sudo apt-get install g++
`
然后 cd 至 cpp 文件指定路径执行如下命令
```bash
g++ filename.cpp -o filename
./filename
```
第一个命令是编译,第二个则是运行。

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

### 基础知识
### 基础

分模式来吧。

@@ -125,12 +138,12 @@ vim 文件路径

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

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

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

##### 普通模式(normal)
vim 的命令大部分都是在普通模式下完成的,普通模式下可不能乱按,可以说每个键都是命令。
Vim 的命令大部分都是在普通模式下完成的,普通模式下可不能乱按,可以说每个键都是命令。
```
首先是 hjkl 四个方向键。                         
                                              k ^
@@ -138,17 +151,17 @@ vim 的命令大部分都是在普通模式下完成的,普通模式下可不
                                                v j
```

其实大多数编辑器都是用方向键做出移动命令,vim 也不例外,但 hjkl 给了我们更好的选择,只需要一段时间的适应,你便能快速地操作它们进行移动,而且它们可没有方向键那么远,节省时间是一流的。
其实大多数编辑器都是用方向键做出移动命令,Vim 也不例外,但 hjkl 给了我们更好的选择,只需要一段时间的适应,你便能快速地操作它们进行移动,而且它们可没有方向键那么远,节省时间是一流的。

普通模式下最重要的命令,没有之一,那就是 u。撤销命令,作用是撤销上一次对文本的更改,普通模式下的 x,d,p 命令都会被撤销,同时进入一次插入模式所编辑的文本也算一次更改,u 命令会删去从进入到退出插入模式所输入的所有东西。与之对应的是 Ctrl+r 命令,他的作用是撤销上次的撤销命令,相当于大部分 windows下程序中的 Ctrl+y。

然后的话,就是普通模式下常用的命令。由于对行命令的使用很频繁,所以大部分的单键命令都可以通过按两次来实现对行操作。常用命令是 x ,用于删除光标后的一个字符。然后是 d 命令,也是删除,但是种类更多,这里不做赘述。同时 d 命令像之前说的,按两次即可删除整行,即 dd。

然后是y命令,可以复制被选中的区域,这涉及到可视模式,即按 v 进入可视模式,多用于选中区域。进入可视模式后移动光标来确定选取范围是可以的,此时按 o 键即可切换活动端,省去了如果跑反方向的麻烦。当然,我相信很多人还是习惯用鼠标操作这一过程的,包括移动光标。vim 很温馨的提供了这一配置:set mouse=a。你可以将它写入你的配置文件中去。有了它之后,你将能够用鼠标选中区域并进行复制操作。当然,选中后按 x 或 d 亦可删除。同时,y 也符合 d 的性质,yy 将可以复制当前行。
然后是y命令,可以复制被选中的区域,这涉及到可视模式,即按 v 进入可视模式,多用于选中区域。进入可视模式后移动光标来确定选取范围是可以的,此时按 o 键即可切换活动端,省去了如果跑反方向的麻烦。当然,我相信很多人还是习惯用鼠标操作这一过程的,包括移动光标。Vim 很温馨的提供了这一配置:set mouse=a。你可以将它写入你的配置文件中去。有了它之后,你将能够用鼠标选中区域并进行复制操作。当然,选中后按 x 或 d 亦可删除。同时,y 也符合 d 的性质,yy 将可以复制当前行。

然后就是更快的跳跃了。如果说只是使用 hjkl 的话,光标的移动显然不够快,而鼠标却又要伸手去拿。vim 提供了普通模式下更快的跳跃方法,w 可以跳到下个单词的开头,而 e 可以跳到当前单词结尾,0 可以跳至行首,$ 可以跳至行尾,岂不是快多了?而且 w,e,0,$ 还可以用于许多命令中 de,dw,d0,d& 分别对应删至单词尾,删至下个单词头,删至行首,删至行尾。以及 y 命令亦可同理。
然后就是更快的跳跃了。如果说只是使用 hjkl 的话,光标的移动显然不够快,而鼠标却又要伸手去拿。Vim 提供了普通模式下更快的跳跃方法,w 可以跳到下个单词的开头,而 e 可以跳到当前单词结尾,0 可以跳至行首,$ 可以跳至行尾,岂不是快多了?而且 w,e,0,$ 还可以用于许多命令中 de,dw,d0,d& 分别对应删至单词尾,删至下个单词头,删至行首,删至行尾。以及 y 命令亦可同理。

然后是 vim 的可重复。在输入某个命令前,输入一个数字的话,就会重复那么多次。如在普通模式下:
然后是 Vim 的可重复。在输入某个命令前,输入一个数字的话,就会重复那么多次。如在普通模式下:
```
asdasdasdasdasd
asdadasdddd
@@ -165,7 +178,7 @@ asdasdasd
#####命令行模式
其实这并不能称作是一个模式= =。

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

此模式下有一些很有用的命令

@@ -184,8 +197,8 @@ asdasdasd

emm 基础应该就用到这些了吧,往后的插件,配置,效率使用在对应篇幅里。

最后其实 vim 还有一些基础操作,它们在 vim 自带的教程里将会讲述。打开终端输入:
```
最后其实 Vim 还有一些基础操作,它们在 Vim 自带的教程里将会讲述。打开终端输入:
`bash
vimtutor
```
`
即可进入教程,二三十分钟你就能掌握基础了,但应当严加联系才能彻底掌握。