
自1984年,乔布斯带领的苹果公司发布了麦金塔系统以后。电脑操作从命令的方式进化到了图形的方式,然而,我们作为开发者,必然要返璞归真,也必然明白所有的图形都只是对命令的封装。

vim是一个图形化时代的特立独行,作为不依靠鼠标,纯命令编辑文本的编辑器,它占据了所有的Linux系统,开发人员几乎不可能不接触vim。本文讲从安装开始讲,一直讲完基本的vim的使用方法,操作系统使用Windows,因为win作为当今地球上最普遍的操作系统,可以让大部分人都可以通过本文学会vim,学会win下vim的使用,它的命令和Linux是完全一致的,你就也可以顺便打通Linux,macOS下的vim的使用方法。如果你爱上了vim,我想即便在Windows下再也不需要Notepad++,亦或者sublime text等各种文本编辑器。这一篇的学习如果你能坚持看完,我想它给你带来的收获是前所未有。
这一篇文章看完加学会大概需要耗费你一小时,一小时可以学会使用vim,应该是相当划算的。本人为了写好这一篇内容,参考了两篇文章,一篇来自zempty这位大佬的精通 VIM ,此文就够了。另一篇是卢钧轶所写的史上最全Vim快捷键键位图 – 入门到进阶。这一篇的内容可以看作精通 VIM ,此文就够了的展开详解版,因为我会把所有的命令快捷键都截屏展示,知识骨架和精通 VIM ,此文就够了也相差不多,本人是在昨天晚上花了大约一小时通过看精通 VIM ,此文就够了,学会使用vim的,本文将进一步总结精通 VIM ,此文就够了,全文线性结构,从上往下阅读即可。

这一张键位图,每个学习vim的人基本都会看到,然而不会vim的人是没法看的,乍一看一头雾水,这一张图我不会讲的,仅供大家参考,因此下文,将由浅入深,从基本的安装开始讲,力求讲透,大家尽可放心。
Linux是自带vi的,有的甚至自带vim。因此Linux就不讲了,下面讲一下win系统的vim怎么安装。

本人的vim如图。
首先,你去GitHub的vim开源项目下载它。下载最新版即可。

在Assets目录里,你可以看到.exe安装程序,.zip安装等等。本人推荐第二个,一方面这种解压安装的方式和Linux更相近,另一方面你解压后放到任何你想放的文件夹下你直接就可以用,而且删除也很方便,不需要卸载,只需要丢到回收站即可。
解压后,你会得到一个类似的文件夹。
再说一遍,安装方式,下载解压即可!
展示一下解压完后的文件夹目录。



我们主要打交道的东西,其实就是这两个。


gvim是半图形化半命令行的,你可以当作vim学习的过渡产品,而vim则是真正的纯命令,它和Linux下的vim完全一致,这将是我们最终要攻破学习的高山!
配置环境变量

在这里,填一下你刚刚解压完的路径就可以。

这样,你就可以随处启动gvim和vim了。使用快捷键win+r开启这个运行窗口,你也可以像启动Java或者mvn,node等等那样,直接cmd里调用vim。启动vim就写vim,启动gvim就写gvim。
下面是几种启动方式的图片演示。





等一下,你是不是觉得gvim丑爆了。这个是可以配置的。去你的vim安装路径。

这个路径往下再点一下就是目录了,在这里创建一个叫_gvimrc的文件。

记住,没有后缀名,不是_gvimrc.txt或者什么东西,就叫_gvimrc,用记事本,Notepad++,或者vim,随便你用什么打开它,写进去set guifont=Microsoft_YaHei_Mono:h12,不生效请往下看,我会讲。

这个配置文件是约定大于配置的,类似于Spring Boot的配置,因此你只把你想改的东西写进去就行,写什么改变什么,不写就不改变,具体可以自行查阅,我在这里就只修改font,就是字体的字型和大小,其中set guifont=Microsoft_YaHei_Mono:h12中,set guifont是指令,=后面跟内容,Microsoft_YaHei_Mono是字体名称,Microsoft_YaHei_Mono是我很喜欢的一种字体,win电脑自带是没有是,是微软专门为命令行开发的字体,大家可以自行百度下载,也可以放上自己想用的字体。

如下有些是微软自带的字体,你把字体名字改了,改成你电脑有的并且支持命令行的字体就可以生效,然后h12是字体大小,我设置了12。附一个Microsoft_YaHei_Mono的下载链接,下载Microsoft YaHei Mono,我的是收费的,想要免费的可以自己百度去找。安装字体就不讲了,设置完再打开gvim就是这个样子。
还有,这个不是重点!!!我们重点是学习vim,gvim你不想设置,并无关系,后面的文章我都会用vim演示,gvim不是重点!实在想钻研,也可以参考这一篇博客园gVim设置默认主题和字体(图文详细版)。

哪怕gvim你搞不定,只要这个vim你搞定,能出来这个就可以,无论是centOS或者Ubuntu等等,你接触的vim其实都是这个!

后面你可以用gvim来编辑文件,也可以用vim来编辑文件,安装到此就讲解完毕了,可以一起帮助乌干达的可怜儿童了。
先大致介绍一下vim的结构,vim分缓冲区(Buffer)和窗口 (Window ) 。
暂时不用跟着操作,先看一眼。
我们第一眼看到的就是窗口,所有的文件编辑也是在窗口进行。
在正常模式下,先按一下:,紧接着输入ls,回车,你就可以看到缓冲区。

按回车后

gvim如此,vim同样如此。

然后我们要明白,vim有四种模式:
正常模式 (Normal-mode)
插入模式 (Insert-mode)
命令模式 (Command-mode)
可视模式 (Visual-mode)
下文逐一讲解。
下面请跟着操作,我们先开启vim,进去你要编辑文件的文件夹下,输入
cmd C:\Users\Peter\Desktop\study\vim

总之,在cmd开启这个文件夹即可,就如同你Linux进入了一个文件夹。

对了,你可以先创建这两个文件,代码如下:
#include
int main()
{
printf("Hello, World!");
return 0;
}
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
然后cmd输入指令
vim hello.c hello.go
你也可以
gvim hello.c hello.go
gvim对初学者更友好一点,我们就直接一步到位演示vim了,不论你用gvim或者vim,下面内容都是一样的,放心食用。


刚进来这个模式就是正常模式,无论你进入那个模式,狂按esc或者是快捷键control + [,就会退到正常模式,我们先说正常模式,个人更喜欢control + [。
我们暂时不考虑其余三种模式,我们先玩正常模式,我们编辑文件,毫无疑问,剪切,删除,复制,粘贴必不可少,没有了鼠标,如何控制光标也是个问题,我们就先从控制光标说起。

毫无疑问,你会发现鼠标也可以点光标,这种我们就不说了,有些环境是没有鼠标的,这个太常规了,然后键盘上下左右按钮也能控制光标移动,这个也不说。下面说的方法,无论你不小心进入四种模式任何一个都可以用。
lhjk好的,方向感记住,上下左右对应
kjhl,和你打游戏记住wsad一样,有了这个方向感,就可以往下玩了。
下一个问题,怎么选中一个单词?这个时候我们要进入可视模式 (Visual-mode)了,后文我们将在这四种模式里来回跳跃,每一次变模式我都会说一声,大家跟上!现在我们正处在正常模式,按一下v,进入可视模式 (Visual-mode)。
再说一遍,可视模式进入方法,正常模式下按v。不是正常模式你就先回正常模式,按esc或者control + [,退回正常模式。
esc或者control + [v
然后用我们的上下左右hjkl键移动光标,这时候你会发现你移动到哪里,就选择到了哪里。
如图,return这个单词被我选中了。

下面对这个单词做操作。
d
消失不见了。
u
又回来了,撤销键很常用吧。
ctrl+r回滚一下,撤销一下,大家自己试一试效果。
然后再按下v进入可视模式,然后hjkl这样,你想办法移动光标选中我们的单词。按一下y就会复制了。
y
已经复制下来了。
p
d是的,剪切还是我们的d,删除的同时会复制一份到我们的vim剪贴板。
想一下,这样你是不是就可以像用记事本一样,能粘贴复制删除撤销,这样我们编辑处理文本大概的功能都有了。然后我们要开始编辑文本了,对不对?那就是增删改查的增,输入。下面我们开始讲怎么输入。
下面,退回到你的正常模式,再说最后一遍,按esc,或者ctrl+[。
i,I,a,A,o,O,s,Si光标所在的字符之前插入需要录入的文本。

I请记住,每次输入这六个键位前,请先回退到正常模式。

插入a

a 是在光标所在的字符之后插入需要录入的文本。
AA 是在光标所在行的行尾插入需要录入的文本。
oo 是光标所在行的下一行行首插入需要录入的文本。
O(大写O)O 是光标所在行的上一行行首插入需要录入的文本。
ss 删除光标所在处的字符然后插入需要录入的文本。
SS 删除光标所在行,在当前行的行首开始插入需要录入的文本。
后面几个大家自己试一试。
讲最后一种模式。
这个模式依旧是从正常模式去进,按下:,就进来了,带着:的就是命令模式。

大家都知道这个,很多人会写错东西,都会按:q赶紧不保存退掉,防止改坏文件,毕竟新生+vim=随机字符生成器,现在不必了,写错了,记得狂按u撤销你的错误操作就行了,因此不保存退出只说一下,就不演示了。
:q,退不掉就按:q!强行退!:wq
因为我们刚刚打开了两个文件,它会提示你还有一个文件没保存,就是hello.go那个,没关系,我们先不管,再按一下回车,再输一下:wq,保存退出即可。

我编写的东西已经有了。到此,恭喜你,已经入门了。
vim实际上,熟练后是一个非常高效的编辑器,因为快捷键就是比鼠标快,脱离鼠标的编辑器就是要超过离不开鼠标的编辑器!下面说说怎么提高复制粘贴,移动光标,撤销回滚,高亮查找等等。
vim hello.c hello.go

lsls是Linux一个非常常用的命令,熟悉Linux的朋友一定倍感亲切。记得ls写到:后面。


你已经进入缓冲区,可以看到文件编号,hello.c的编号是1,hello.go的编号是2,那么,继续按:(不必回到正常模式)

输入:b1,就会切换到hello.c,输入:b2,就会切换到hello.go。
下面这个我输了:b2,进入了hello.go文件。

Ctrl + w,再按一下s
Ctrl + w,再按一下v
你可以看到你的光标在哪个窗口,让光标跳到别的窗口的方法是:
Ctrl + w,之后,还记得我们的上下左右吗?Ctrl + w,然后lCtrl + w,然后hCtrl + w,然后jCtrl + w,然后k:set hlsvim是命令可以操纵一切的,你就是黑色框框里面的上帝。:set hls这是一个操纵vim本身样子的指令。

:,还有/
/后面就写你要搜的东西,他就会高亮显示出来。如/i
:noh

都不亮了。
n,就会跳到下一个匹配/后面字符的地方/同样支持正则表达式
更多的特殊用法。
可以参考菜鸟教程vim 菜鸟教程。
或者是我学习vim时阅读的这一篇精通 VIM ,此文就够了。
后面你还需要会什么呢?例如快速移动光标,跳段尾段首,行尾行首,跳指定行,多行复制删除,宏录制等等。vim支持多种语言,也可以安装插件,其强大程度不弱于一个IDE,实际上vim官方一直也认为自己不仅仅是一个文本编辑器那么简单~
lhjkesc或者control + [vductrl+rypdi,I,a,A,o,O,s,Si:q:q!:wqvim file1,file2:lsCtrl + w,再按一下sCtrl + w,再按一下vCtrl + w,然后lCtrl + w,然后hCtrl + w,然后jCtrl + w,然后k:set hls/搜索内容:nohn/[1-9]