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

Update softwares.md

parent 81b7747f
Loading
Loading
Loading
Loading
+40 −17
Original line number Diff line number Diff line
@@ -77,15 +77,21 @@ vim 是一款非常优秀的文本编辑器,但由于其陡峭的学习曲线

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

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

#### 基础知识
我会穿插必要配置的讲解,在后面的配置里也会有总结的。

配置的话,一般在 home 下面创建 .vimrc 文件,都写进去就行。

分模式来吧。

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

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

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

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

##### 普通模式(normal)
vim 的命令大部分都是在普通模式下完成的,普通模式下可不能乱按,可以说每个键都是命令。
```
@@ -95,22 +101,39 @@ vim 的命令大部分都是在普通模式下完成的,普通模式下可不
                                                v j
```

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

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

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

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

然后是 vim 的可重复。在输入某个命令前,输入一个数字的话,就会重复那么多次。如在普通模式下:
```
    noremap <Up> <Nop>
    noremap <Left> <Nop>
    noremap <Right> <Nop>
    noremap <Down> <Nop>
    inoremap <Up> <Nop>
    inoremap <Left> <Nop>
    inoremap <Right> <Nop>
    inoremap <Down> <Nop>
asdasdasdasdasd
asdadasdddd
asdasdasd
```
顺便对 vim 配置中的快捷键作以介绍:noremap <快捷键> 执行怎样的命令  代表普通模式下设置某个快捷键执行某命令,而插入模式下的自然就是 inoremap blablabla 的云云啦
光标正位于第一行,该如何删除这三行呢?普通模式下按  3dd  即可。其实还有.命令也是可以做到一些重复的,这会在效率篇中提到。

然后是全文的跳跃,按 gg 可跳至代码的开头,按 G 可跳至代码最后一行,先按数字再按 G 可跳至指定行。

那么在文中还有极为方便的查找功能,普通模式下只需按 / 下方即会出现查找框框,输入需要查找的字符按回车就好啦,如果有多个查找结果,只需按 n 即可跳至下一个查找处,按 N 即可跳至上一个。

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

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

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

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

:q 退出,:w 保存,:wq 保存并退出,:q! 不保存并推出,:e filename 打开当前目录下指定文件,这些是比较基础的。

而上面这八行代码的效果就是让普通与插入模式中的方向键无效化  ...... 听起来是不是有点丧病,其实我也觉得有点 ...... emm。但是方向键在 vim 里明明可以用来干更多事情,为何不尝试解放它们来提高编辑效率呢?它们完全可以映射成别的什么,何况有的键盘还没有方向键来着(咳咳)。当然你习惯了实在不想改变的话也没什么,映射 hjkl 也行,但是我仍是建议保留 inoremap 的那四行,至于原因,在撤销里会有的,莫急莫急。(当然你完全可以先去后面看看为什么)
然后是很强大的命令 :s/A 串/B 串/ 作用是把指定范围内的所有 A 串替换成 B 串。想象一下题写完了,但是发现没开 long long 的时候,完全不绝望有没有,一个小命令,妙不可言。

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

#### 插件介绍
最后其实 vim 还有一些基础操作,请在终端输入 vimtutor 跟着教程走吧,二三十分钟你就能掌握基础了,但应当严加联系才能彻底掌握。