目录
[5、Ctrl + r命令](#5、Ctrl + r命令)
[12、shirt + ~](#12、shirt + ~)
[14、x或shirt + x命令](#14、x或shirt + x命令)
vim是一款多模式的编辑器
vim是编辑器,所以只负责写代码
vim要打开文件,直接在vim后面跟上文件名即可

vim也可以创建文件

本身不存在temp.c,但是vim temp.c后,保存并退出后(底行模式下输入wq)就存在这个temp.c文件了
一、vim的几种模式
1、命令模式
我们进入vim,默认打开的模式就是命令模式
2、编辑/插入模式
在命令模式下输入i,就进入了编辑/插入模式

vim编辑器的左下角出现insert的标志,就说明在编辑/插入模式中
进入编辑/插入模式后,正常编写代码即可,如:

如果想从编辑/插入模式回退到命令模式,按键盘的ESC按键(左上角按键)即可
3、底行模式
**在命令模式下进行****shirt + :**的操作,进入到底行模式

vim编辑器的左下角出现一个:的标志,就说明此时在底行模式中
然后输入wq即可保存并退出vim
w指保存,q指退出,wq就是保存且退出
如果有其他情况无法退出或保存,w!或q!表示强制保存或强制退出,!就是强制的意思
而如果想从底行模式回退到命令模式,按键盘的ESC按键(左上角按键)即可
①增加行号
在底行模式下可以增加行号
输入set nu


取消行号输入set nonu


②分屏操作
底行模式下输入:vs + 文件名
Ctrl + w + w 光标在左右屏之间切换,也就是按住ctrl后连续按两次w
w:写入(w!强制写入)
q:退出(q!强制退出)
例如:当前输入了vim temp.c

在底行模式下输入vs mytest.c

这时就会进行分屏操作,一边是mytest.c,一边是temp.c

此时光标在哪个文件中,底行模式输入的指令就是对哪个文件执行的
如图就是光标在mytest.c文件中,所以输入的指令都是在mytest.c文件中执行
③不退出vim执行命令
底行模式下输入:! + cmd(对应的指令)
输入!ls -al就是在不退出vim的情况下,显示当前路径下的文件


然后按回车键即可返回vim页面

在不退出vim的情况下进行指令的操作还是有些好处的,比如:
可以在vim编辑器中就进行gcc,检验是否出错
如果编写代码时忘记接口功能,可以使用man在不退出的情况下进行查看
总结一下:命令模式可以通过操作切换到编辑/插入模式或底行模式,编辑/插入模式或底行模式按ESC按键即可回退到命令模式中,但是编辑/插入模式和底行模式不能直接进行切换,必须要回退到命令模式后再切换
4、替换模式
在命令模式下进行shirt + r的操作,进入到替换模式

vim编辑器的左下角出现一个replace的标志,就说明此时在替换模式中
这时在光标所在位置输入代码,会直接替换掉原位置的代码,不会受原位置代码的影响
同样如果想从替换模式回退到命令模式,按键盘的ESC按键(左上角按键)即可
二、vim的常见命令
注意:都是在命令模式下的常见命令
1、yy命令
将当前光标所在的行复制
也支持nyy(n代表具体数字)
2、p命令
将复制行进行粘贴
也支持np(n代表具体数字)
例如:

当前在光标所在行,命令模式下输入yy,再输入p,就变为:

而nyy与np也和这个操作一样,例如原本是这三行内容:

我们输入3yy,输入2p

3yy就是复制这三行内容,2p就是复制两次这三行内容
3、dd命令
将当前光标所在行进行剪切(删除)
这里也支持ndd(n代表具体数字)
只进行dd操作,就是删除作用,如果dd和p结合使用,就有了剪切的作用
4、u命令
u就是撤销刚刚的操作
比如刚刚3yy+2p后,按一下u就变为下图所示的情况:

5、Ctrl + r命令
Ctrl+r就是撤销u的操作
也就是刚刚u操作后后悔了,所以撤销刚刚做的撤销操作
比如刚刚u操作撤销了3yy+2p的操作,但是我后悔这个撤销操作,想恢复这个撤销操作前的代码,这时按Ctrl+r即可恢复,即:

6、shirt+g命令
光标定位到文件的结尾
也支持 n + shirt + g,表示光标定位到第n行
比如想让光标出现在第50行
那就在命令模式下先输入50,在shirt+g即可
7、gg命令
光标直接定位到文件的最开始
第5条和第6条命令是光标的上下移动
8、shirt+6命令
将光标定位到当前行的最开始
9、shirt+4命令
将光标定位到当前行的最结尾
10、w,b命令
以单词为单位进行光标的前后移动
第7、8、9条命令是光标的左右移动
11、h,j,k,l命令
hjkl这四个键就是对应的左下上右四个方向操作
h:左;j:下;k:上;l:右
因为老式键盘就是这四个键表示的上下左右,所以延续至今
12、shirt + ~
光标所在位置挨个进行大小写切换
即大写变为小写,小写变为大写
原本是这样:

shirt+~后,变为:

13、r命令
替换光标所在的字符
也支持nr(n代表具体数字)
nr就是表示替换从光标所在位置开始的n个字符
14、x或shirt + x命令
x是删除光标所在位置的字符,shirt + x是删除光标之前位置的字符
也支持nx(n代表具体数字)
nx就是表示删除从光标所在位置开始的n个字符
三、关于vim的配置
在我们初步使用vim时会发现非常难用,因为使用vim时不会自动缩进,不会自动填补符号或括号,不会根据输入的头文件进行搜索已有的头文件之类的工作,这时我们就需要自己配置自己vim
在自己的.vimre文件中,从网上搜索vim 配置,找到自己所需要的功能,vim .vimrc后粘贴进去即可