前言
VIM Adventures(又称VIM大冒险)是一款用于学习VIM编辑器使用的在线网页端小游戏,通过这个游戏,我们能够快速掌握VIM的一些常用的基本命令,学vim可以说这个游戏是必备的 《vim》实用技巧则是一本很经典的vim学习用教材,因此
部署
由于官网 的版本只有前三关免费,之后的关卡需要25美元还只有六个月使用期限,对于学生党来说简直就是灾难,所以一开始我在这里 找到了可以游玩的托管项目——但是太慢了,所以我准备部署在本地
源码构建部署
- 安装nodejs,具体的网上教程很多
- 下载项目源代码,github上因为维权大多没有了,所以我提供一个链接 提取码: LAIN
- 进入工作目录,解压1.1.0那个版本并进入,打开CMD执行
npm install
- 设置环境变量,在前一个目录(有.exe文件)下创建.env文件,并输入
|
|
5.运行.exe并打开127.0.0.1:80就可以本地运行了,存档的话要记得创建一个saved文件夹先才可以存档
VIM使用技巧
基本实用技巧
基础的宏指令
-
.
会执行我们上一次的 修改 命令,因此也可以将其看作我们最初的一个宏,在此可以实现非常多的功能 -
拒绝自我重复 例如写c语言时我们常要在末尾添加
;
,但是我们不想每一行都通过j$.
,这太麻烦了,那么我们可以使用A
指令,它允许我们实现$a
的功能,移动到一行末尾并进入插入模式,那么我们通过’A; j.‘就可以实现每行末尾快速添加 ,同样的,vim中有相当多的这样将多个指令合并成一个指令的一箭双雕
指令,C S s o O
等,并进入插入模式,这可以实现什么呢? -
以进废退
var foo = "method("+argument1+","+argument2+")";
这样一句语句在JS中并不美观,如果我们想要实现将+号变成前后有空格的样式,可以如下操作
|
|
- 手动修改
例如一段文字中出现了多次一个单词,我们想要修改可以
|
|
总结
我们发现在以上多个修改中,我们都通过.
来实现替换或添加字符到我们想要的位置,我们将其总结为
一键移动,一键执行,这就是我们想要的.
范式
普通模式
Just like a painter won’t pause with his brush on the page when he is rest,we truly need to rest 普通模式命令的强大往往来自于它可以把操作符和动作命令结合在一起。
程序员就像画家,思考、阅读、穿梭于代码之间浏览后,我们并非需要插入模式来书写一切,我们只需some gadgets,复制移动删除(并非ctrlcctrlv)就可以完成我们的作品
撤销单元切块
u
会触发撤销最新一次的修改,可以是改变文档的操作,也可以是其他模式中的操作,因此我们可以控制撤销命令的 粒子度
那么多久应该修改一次插入模式呢,每一个撤销块
对应一次思考过程或许是可以的,当然你也可以按照个人习惯来,但是一般来讲,如果停顿的时间长到足以质疑”我应该退出吗“,那就退出吧
构造可重复的修改
正如前一章中一样,我们想高效完成一件事情,最需要的就是效率
我们已一句The end is nigh
举例,将光标放到末尾
- 反向删除
|
|
- 正向删除
|
|
- 删除整个单词
daw
即可——delete a word
这样看下来,虽然都是三个字符,但想必你知道如何区分最棒的语句吧,daw的话我们可以直接通过.
进行多次操作,岂不美哉
何时重复,何时快速
Delete more than one word
,如果我们想要删除more than两个单词,有多种方式,d2w
和2dw
以及dw.
都可以,而如果我们想要删除更多单词的时候,应该如何抉择?
如果我们dw加7个.
,想要撤销不小心造成的错误时可以精确操作,而一次性删除的话就无法实现。
——只在必要的时候使用次数
双剑合璧,天下无敌
即 操作符 + 动作命令 = 操作
命令 | 用途 |
---|---|
c | 修改 |
d | 删除 |
y | 复制到寄存器 |
g- | 反转大小写 |
gu | 转化为小写 |
gU | 转化为大写 |
> | 增加缩进 |
< | 减小缩进 |
= | 自动缩进 |
一条额外规则,重复指令会作用在当前行上 |
完美而方便的缩进规则
如果安装了textobj-entire插件,简单地执行=ae
就可以作用在整个文件上,Kana Natsuno插件则是使用=ie
当然,如果想用= 命令来执行也是可以的,执行gg=G
就可以了
插入模式
- 即时更改错误,在插入模式下,退格键可以删除光标前的字符,我们还可以使用组合键
按键操作 | 用途 |
---|---|
ctrl+w | 删除前一个单词 |
ctrl+u | 删除至行首 |
ctrl+h | 删除前一个字符 |
当然,这些操作命令并不是插入模式独有的,命令行以及在bash中都可以使用它们
- 返回普通模式 最经典的便是ESC进行退出,当然也可以用
ctrl+o
,这允许我们切换到插入-普通模式- 插入-普通模式:这允许我们执行一次普通模式命令后马上返回到插入模式
- 当前行位于窗口顶部或底部时,我们可以用zz命令重绘制屏幕,便于查看内容
- 在不离开插入模式的情况下,粘贴寄存器中的文本
|
|
我想将开头的Practical Vim放到文件末尾, 可以按以下步骤操作
|
|
- 随时随地做运算 例如我们需要计算六把椅子的总价,每把35元, 只需将光标移动到需要位置,然后执行
|
|
当然这只是最简单的计算之后的