vim也是一个笔记本,它不能调试也不能运行但是它拥有多个模式并且有许多实用性功能。我们先来认识一下vim的命令模式,当我们打开vim的时候就是命令模式,在这个模式下不能往文件里输入内容,在键盘中输入的所有内容都会被当作指令来处理,比如说下面的操作:
按下回车就会出现下面的场景:
并且这个时候敲键盘是没有反应的,当然如果你瞎按的话还是会有反应的,因为你可能无意间将命令模式改成了其他模式,然后在其他模式下就可以往文本中输入内容,所以这里大家就记住一点,vim刚打开的时候是命令模式,在这个模式下输入的所有内容都会被当作成指令来看待就行了,那这里大家可能就会产生一些疑惑,命令模式有什么意义呢?那这里大家就得先了解一下命令模式的发展背景:命令模式诞生的时候是一个没有鼠标的年代,人们操作电脑的方式就是通过键盘,所以在那个时候创建命令模式的意义就是提高人们编辑文本的效率,比如说将某一行的内容复制粘贴到另一行上,或者将莫一行的因为字符全部都由小写改成大写等等,那么这就是命令模式存在的意义
我们在命令模式按键盘上的i就可以由命令模式转换成插入模式:
当下面出现insert就表明我们这里是插入模式了,这时我们就可以往这个文本中输入我们想要的内容:
当我们将内容输入完之后就可以输入esc来退回插入模式返回命令模式,再在命令模式中输入shift+;就可以进入低行模式:
进入了底行模式就可以在最后一行输入一些内容:
比如说我的文本编辑完了想要退出文件的话就可以在底行输入wq来退出并保存文件:
按下回车就退出了文件,并且文件中文件中的内容也保存了下来:
再比如我们这里在编写文件的时候没有出现行号,那么这里我们就可以在底行中输入setnu就可以在文本中显示行号了:
这就是底行模式存在的意义,它主要是对文件本身做出改变而不是文件的内容。如果我们想要从底行模式退回命令模式的话也是按es键,这里大家要注意的一点就是vim不支持从插入模式直接跳转到底行模式,也不支持从底行模式直接跳转到插入模式,这里大家得注意一下:
看到这里相比大家应该能够大致的了解vim的三个主要模式,那么接下来我将带着大家详细的了解这三个模式。
以下的操作都是在命令模式下执行的操作
第一个:shift+4
这个可以将光标移动到当前行的最右边,比如说当前光标的所在的位置如下:
我们在命令模式下输入shift 4后,光标就来到了当前行的最右边
那么这就是shift 4的作用将光标直接移动到当前行的最右边,shift+4也就是键盘上的$。
第二个:shift+6
shift+6的功能就是将光标直接移动到当前行的最左边,比如说一开始我们光标所在的位置如下:
按下shift加6后光标就移动到了当前行有内容的最左边:
那么这就是shift+6的作用效果,这里的shift加6也就是^.
第三个:shift+g
shift+g的作用就是就是将光标移动到最后一行,比如说一开始光标所在的位置如下:
我们按一下shift+g就会将光标移动到最后一行的最左边:
那么这里的shift+g就相当于输入一个大写的G
第四个:gg
命令模式下输入一个gg就可以将光标移动到第一行的最左边,比如说一开始的光标在这个位置:
那么命名模式下输入一个gg就会将光标移动到第一行最左边的位置:
第五个:num shift g
这个命令的功能就是将光标移动指定的num行的最左边,比如说一开始的光标在这个位置:
那么这里我们输入5 shift g就可以将光标移动到第五行:
第六个:h j k l
这四个字母分别表示四个意思h是将光标向左移动,j是将光标向下移动,k是将光标向上移动,l是将光标向右边移动,当然这里移动光标也可以使用数字键左边的上下左右都可以。
第一个:yy
在命令模式中输入输入一个yy,会将光标当前行的内容进行复制。
第二个:p
当我们使用yy将想要的内容复制之后,我们就可以使用p在光标所在行的下一行将复制的内容进行粘贴,比如说下面的操作:首先使用yy将光标所在行进行复制
然后将光标移动到第10行:
这时我们按一下p就可以看到在return 0的下面出现了一个printf函数,那么这就是p的功能:
第三个:num p
如果我们想将一个内容复制多份的话就可以输入num p,这样就可以将复制的内容复制num次,比如说下面的操作:首先使用yy将第八行的内容复制一份
然后将光标移到第十行并输入5 p就可以发现这里将复制的内容在光标的下一行打印了5边
那么这就是num p的功能,一次性打印多次。
第四个:num yy
yy是将光标所在行进行复制,那么这里的num yy就是将光标所在行和往下的num-1行的内容全部都复制一边,比如说当前光标在这个位置:
我们输入3 yy就是将第五行和往下的两行都进行复制,也就是将第5 6 7行进行复制,那么我们将光标移动到return 0这一行这时我们按一下p就可以看到在return 0的下面打印了5 6 7行的内容:
第五个:u
这个指令的作用就是撤回操作,比如说我刚刚用复制粘贴一下子打印了三行内容,那么这里我们输入一个u就可以撤回之前的打印:
第六个:ctlr r
cltr r就是用来撤回使用的撤回的,比如说我想将第4行的内容打印到第11行就可以使用yy+p组合:
如果这里我们又不想执行刚刚的粘贴的话,这里就可以按一下u撤回一下刚刚执行粘贴的操作:
如果我们这时又想要原来的粘贴操作,想要撤回之前的撤回的话就可以输入ctrl +r
这里就可以撤回之前的撤回。
第七个:dd
这个指令就是剪切,但是这里的剪切我们一般用于删除,输入dd就可以将光标所在行剪切掉,也可以说是删除掉,比如说当前的光标所在行是第四行:
那么这里按一下dd就可以发现第四行原来的内容不见了
第八个:num dd
输入dd是剪切第一行,那么输入num dd就是剪切往下的num行,比如说我们当前的光标是在第5行,那么我们输入2 dd就是将第5行和第6行的内容剪切掉:
第九个:dd p
当我们使用dd将内容剪切掉之后,我们就可以使用p,将剪切掉的内容粘贴到其他的地方上,比如说我们上面剪切了两行,那么把光标移动到第8行按下一个p就可以发现原来第5行和第6行的内容就打印到了第九行和第十行上去了:
第一种:shift ~
这个指令的功能就是将光标所在的文本由大写改成小写,或者将小写改成大写,比如说一开始文件的内容为:
我们按一下shift+~就可以发现光标所在的大写I变成了小写的i:
并且光标指向了下一个位置,那么这就是shift+~的功能,那么这里我们按住shift不动,然后不停的按~的话就可以将一整行的内容由大写改成小写,由小写改成大写:
第二种:shift r
在命令模式中按住shift加r就可以进入替换模式:
一开始底行中没有显示任何内容,那么这就是命令模式,当我们输入shift加r的时候,我们就可以看到底行出现了英文字replace,那么这就是进入替换模式:
在这个模式下我们可以输入字符来改变光标所在的内容,比如说一开始光标指向的是printf中的p:
这时我们按下键盘中的字符就可以发现这里的p替换成了你输入的内容,比如说这时我们输入了一个c就可以看到这里的p改变成了c:
并且光标往后移动了一个位置,在替换模式下按了删除键,光标就会往前4一格,并还原原来的内容,比如说这里我们按了一下删除键,就可以看到这里的c又变回了原来的p:
那么这就是shift r的功能。
第三种:n r
按下shift+r是替换光标所在的一个字符,那么按下n加r就替换当前行的n个字符,比如说输入一个5 r就是替换光标所在往后的5个字符的内容:比如说当前的光标在这:
我们在键盘中输入一个5 r再按下一个a的话就可以看到光标所在并往后的4个字符都变成了a:
那么这就是n r的功能。
第四种:x
按下x就可以删除光标所指向的内容,比如说当前光标所在的位置如下:
按下x后就可以发现光标指向的6就被删除了:
第五种:shift x
单独一个x是删除光标所在的内容,而shift x就是删除光标左边的字符,比如说当前的光标在下面这个位置:
我们在命令模式输入shift x就可以看到字符5被删除了:
当然上面的x和shiftx都是支持批量删除的,n x就是往右删除n个字符,n shift x就是往左删除n个字符,这里大家可以试一下。
第六种:w b
在命令模式下输入一个w可以将光标向后移动一个单词的距离,比如说当前光标所在的位置如下:
我们在命令模式下输入一个w就可以看到光标来到了i上:
而在命令模式下输入b就是将光标往前挪动一个单词的长度:
那么这就是w和b指令,大家可以了解了解。
插入模式大家肯定不陌生,这个模式就是用来往文本中输入内容的,那么这里大家要知道一点就是不只有输入i才能进入插入模式,输入a或者o都可以进入插入模式,当然还有其他的方法这里我们就不说了。
在命令模式下输入shift :即可进入底行模式,那么在底行模式中往命令行输入setnu可以显示行号,输入setnonu可以取消行号,输入wq就是往文件中输入内容并退出文件,输入w!就是强制往文本中输入内容,输入q!就是强制往退出文件,输入wq!就是强制往文件中输入内容并且退出。这里大家可以了解一下,在第行模式中我们可以还可以使用vs指令来打开目录中的另外一个文件来实现分屏操作,比如说我们创建一个文件test3,并且往这个文件中输入一些内容:首先进入test2文件的底行模式:
在底行中输入vs test3就会出现下面的场景:
我们使用vim同时打开了两个文件,右边是先打开的test2文件,左边是后打开的test3文件,虽然我们这里打开了两个文件进行编辑,但是我们这里的光标只有一个,所以对应的各种模式以及键盘中输入的内容也只是针对光标所在的那个文件,如果我们想要移动光标的话就得在命令模式中输入ctrl ww这样我们就可以将光标移动到另外一个文件并执行对应的操作,当然如果我们使用vs指令后面加上了一个不存在的文件的话这里就会自动的创建一个该文件出来这里大家要注意一下:
在该路径下是没有test4文件的,那么这里我们使用vim打开test3文件,并在底行模式中输入vs test4我们就可以看到这里自动创建出来了一个test4文件:
那么这就是底行模式中分屏操作,在底行模式中我们还可以批量的替换文件中的一些内容,比如说当前的文件内容如下:
在底行模式下输入%s/printf/cout/g
就可以看到这里的printf全部都改成了cout
当然这里远远不止替换printf这一个单词,我们还可以替换hello world变成hello friend等等各种内容:
按下回车就可以看到这里的指定内容全部替换了:
那么这就是底行模式的内容。