自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 + [
。
我们暂时不考虑其余三种模式,我们先玩正常模式,我们编辑文件,毫无疑问,剪切,删除,复制,粘贴必不可少,没有了鼠标,如何控制光标也是个问题,我们就先从控制光标说起。
毫无疑问,你会发现鼠标也可以点光标,这种我们就不说了,有些环境是没有鼠标的,这个太常规了,然后键盘上下左右按钮也能控制光标移动,这个也不说。下面说的方法,无论你不小心进入四种模式任何一个都可以用。
l
h
j
k
好的,方向感记住,上下左右对应
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,S
i
光标所在的字符之前插入需要录入的文本。
I
请记住,每次输入这六个键位前,请先回退到正常模式。
插入a
a 是在光标所在的字符之后插入需要录入的文本。
A
A 是在光标所在行的行尾插入需要录入的文本。
o
o 是光标所在行的下一行行首插入需要录入的文本。
O
(大写O)O 是光标所在行的上一行行首插入需要录入的文本。
s
s 删除光标所在处的字符然后插入需要录入的文本。
S
S 删除光标所在行,在当前行的行首开始插入需要录入的文本。
后面几个大家自己试一试。
讲最后一种模式。
这个模式依旧是从正常模式去进,按下:
,就进来了,带着:
的就是命令模式。
大家都知道这个,很多人会写错东西,都会按:q
赶紧不保存退掉,防止改坏文件,毕竟新生+vim=随机字符生成器
,现在不必了,写错了,记得狂按u
撤销你的错误操作就行了,因此不保存退出只说一下,就不演示了。
:q
,退不掉就按:q!
强行退!:wq
因为我们刚刚打开了两个文件,它会提示你还有一个文件没保存,就是hello.go那个,没关系,我们先不管,再按一下回车,再输一下:wq
,保存退出即可。
vim实际上,熟练后是一个非常高效的编辑器,因为快捷键就是比鼠标快,脱离鼠标的编辑器就是要超过离不开鼠标的编辑器!下面说说怎么提高复制粘贴,移动光标,撤销回滚,高亮查找等等。
vim hello.c hello.go
ls
ls是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
,然后l
Ctrl + w
,然后h
Ctrl + w
,然后j
Ctrl + w
,然后k
:set hls
vim是命令可以操纵一切的,你就是黑色框框里面的上帝。:set hls
这是一个操纵vim本身样子的指令。
:
,还有/
/
后面就写你要搜的东西,他就会高亮显示出来。如/i
:noh
都不亮了。
n
,就会跳到下一个匹配/
后面字符的地方/
同样支持正则表达式更多的特殊用法。
可以参考菜鸟教程vim 菜鸟教程。
或者是我学习vim时阅读的这一篇精通 VIM ,此文就够了。
后面你还需要会什么呢?例如快速移动光标,跳段尾段首,行尾行首,跳指定行,多行复制删除,宏录制等等。vim支持多种语言,也可以安装插件,其强大程度不弱于一个IDE,实际上vim官方一直也认为自己不仅仅是一个文本编辑器那么简单~
l
h
j
k
esc
或者control + [
v
d
u
ctrl+r
y
p
d
i,I,a,A,o,O,s,S
i
:q
:q!
:wq
vim file1,file2
:ls
Ctrl + w
,再按一下s
Ctrl + w
,再按一下v
Ctrl + w
,然后l
Ctrl + w
,然后h
Ctrl + w
,然后j
Ctrl + w
,然后k
:set hls
/搜索内容
:noh
n
/[1-9]