vim是一款多模式的编辑器。既然是多模式就说明vim在用的时候有很多种模式,零零散散大约10几种。但是我们常用的就3~5种模式。其它的那些模式一般情况也用不到。
那既然是编辑器,和我们在windows系统上用的vs2022,decv++这些有什么不同呢?拿vs2022举例,你写代码可以在上面写,调试也可以在这里调,同样执行代码也可以在vs2022上运行。vs2022就相当于把你所需要的所有东西都给你准备好了,这些软件就是所谓的IDE(集成开发环境),简单说,就是把所有功能糅合在一起。但vim不一样,它就是一个单纯的编辑器。要调试,执行就要用其它工具来执行。
vim test.c
这里直接输入命令就可以了,如果你的当前目录里没有test.c这个文件,它会帮你自动创建好的。
如果你没有vim这个工具,可以输入指令来下载:
yum install -y vim
我这里用的是云服务器,一般服务器里都会有vim这个工具,不用自己去下载。你可以直接vim test.c运行一下试试,如果能直接进去就不用在下载了。
进去之后该如何退出呢?
//首先摁shift + :这两个键
shift :
光标会自动定位在最下面,接下来输入wq然后回车就可以了,向下面这样:
你们在刚开始进入vim的时候,会发现一件神奇的事情:你输入不了任何内容。这是因为刚进去的时候是默认为命令模式,此时如果要写入一些内容,需要进入到插入模式去进行,方法也很简单:
直接输入一个‘i’这个字符即可。
此时vim就可以相当于一个普通记事本,你在里面输入内容就可以了。
但是此时想要退出,摁shift和:这两个键时发现不管用了,因为要输入这些指令需要去到底层模式。要去底层模式需要先回到命令模式(摁esc这个键),然后在摁shift和:这两个键去底层模式。到了底层模式在输入wq就可以正常退出了。
注意事项:
- 如果你此时忘记了自己在什么模式,可以摁esc,因为你不管在什么模式下,一直摁esc,最后肯定能回到命令模式,然后在命令模式下去调用其它模式。
- 退出的时候一般先保存在退出,也就是wq命令。
首先,这个指令是在低行模式下运行。
set nu 调出行号
set nonu 取消行号
现在行号就掉出来了。
下面这些命令都是在命令模式下运行的,不要搞错了
yy/p命令都是在命令模式下运行的。
yy:复制光标所在的行
nyy:复制包括当前光标所在行以下n行
p:粘贴到当前光标下面一行
npp:粘贴n次
你在摁下yy的时候会发现什么反应都没有,此时你不要慌张,因为此时你已经把光标所在的这一行已经复制好了。
p命令会把复制的内容粘贴到当前光标的下一行,光标也会随之跳到下一行。
当然只复制/粘贴一行内容,体现不出来命令的特点。在运行粘贴命令p时,在前面加一个数字n,这个数字是任意的,比如20p,10p.这就说明会粘贴n次,可以理解为讲p这个指令运行n次:
这里我输入的是20p,也就会粘贴20行。
npp是粘贴n次,nyy就是复制n行,复制的内容是:包括当前光标所在的行数,向下总共n行。
上面我输入的是3yy,复制的内容就是红框里面的三行,看看打印结果:
上面的确把那三行打印出来了。
dd:把光标所在的这一行剪切。
ndd:把包括光标所在的这一行下面总共n行全部剪切。
剪切完之后在摁p就可以粘贴了。
同样如果你想剪切多行前面加个n就可以了。
看上图,可以发现如果你只剪切,不粘贴的话,这个dd命令其实可以当成删除的命令。
u:把上一步步骤撤销掉。
ctrl r这两个键是刚才撤销掉之后后悔了,摁这两个键可以把刚才的撤销给撤销掉。
如果摁完ctrl r这两个键后又后悔了,此时在摁u可以把撤销的撤销给撤销掉,如果你还后悔了,就在摁ctrl u这两个键。
总结:
u和ctrl r是可以相互更改的。支持你在这里套娃。
在vim里面,如果你保存了在摁u,同样可以进行撤销的操作,但是如果你保存直接退出了,再回来时摁u就不能撤销掉刚才的操作了。
shift g(也可以是G):将光标直接定位在文档末尾
g g:将光标定位在文档的第一行
n shift g:将光标定位到第n行
shift 4(就是$):将光标直接定位到当前行的结尾。
shift 6(就是^):将光标直接定位到当前行的开始。
w:光标按单词为单位向后移动
b:光标按单词为单位向前移动
nw:光标向后移动n个单词
nb:光标向前移动n个单词
既然是以单词为单位,那这里单词的范畴是什么呢?向下面这个:
这里会把printf,hello,word,aaaaaaaaaaaa,aaaaabbb这些都当成一个单词,那问题是不是英文字符的怎么算呢?通过实验可以看到把那些不是字母的字符划分到一起当成一个单词,比如:(" ! 、 “)。
同样w,b命令在前面加n也同样适用。
shift `(也就是~键,在左上角esc下面):在命令行模式下,这个命令可以改变当前光标所在字符的大小写。如果按住shift然后一直按 ~ 就可以无脑一直向后切换大小写:
一直摁就上图这个效果。
r 字符1:如果你想在命令模式下改变当前字符,就可以先按r在输入一个字符1,光标所在的这个字符就变成了这个字符1。
n r 字符1:从当前光标开始后n个字符全部替换成字符1
上面这图是r+h就可以把m替换成h了。
shift r(其实就是进入了替换模式):此时到了替换模式后输入什么就会把光标的内容改成什么,如果改错了,摁Backspace这个键还可以退回,此时按上下左右键还可以移动光标。
替换模式改起来十分的简单,包括上面的几个更改命令,其实你都可以进入到插入模式修改。但上面这些命令让我们改起来变的很简单,也很顺手。
x:删除当前光标后的一个字符
nx:删除当前光标后的n个字符
shift x(X):删除当前光标前的一个字符
n shift x(X):删除当前光标前的n个字符
光标当然可以用上下左右键进行移动,但也支持用hjkl四个键来移动:
推荐:
h:左
j:下
k:上
l:右
i:直接进入
a:进入插入模式后光标后移一位
o:进入插入模式后新起一行
接下来演示三种不同方法进入插入模式时光标的变化:
i:(光标没有任何变化)
这俩命令上面讲过了,这里不在重复
/ key就是一个搜索的命令,key是什么,你们自己可以随便输入,搜索到的内容用高亮标记出来
hello就会用特殊的颜色全部给你标记出来。
n:光标会自动跳到第一个搜索出来的位置,继续摁n这个键,光标会自动找下一个。
w:写入
w!:强制写入
q:退出
q!:强制退出
wq:保存并退出
wq!:强制保存并退出
有些文件可能比较重要,这时候可以在命令后面加上!强制执行这个命令。
! 命令,有些时候想执行一些vim外面的命令,但是又不想退出vim,就可以在想要执行的命令前面加上!
执行完这个命令后,摁任意键就可以回到vim.
%/字符串1/字符串2/g(将文档里所有字符串1替换成字符串2)
vs file:新建一个空文本,文本名自己取,并且分屏显示。
现在寻找光标的位置,光标在哪里你操控的就是哪一个文件。
ctrl w w:切换光标到不同文件,3.6时我们可以新建一些文件,这三个键可以帮助我们快速切换光标到不同文件。
vim配置简单认为,在一个特殊文件里写入一些指令,以后在用vim打开这个一个普通文件时会直接执行这些指令。
vim在启动的时候,会自动在当前用户的目录下寻找配置文件。如果没有就是默认。
一个用户只有一个vim配置文件,而且这个用户的配置文件不会影响到其它用户。
vim配置的命令都写在一个.vimrc这个文件内,没有可以自己创建一个:
在文件里写入信息之前先看看vim打开一个普通文件之后的样子:
很正常是把,然后我们尝试着在.vimrc这个文件里写点东西,比如添加行号的命令:
发现一打开这个文件,行号就会直接给你显示好了。这就是我们配置好的vim。当然还有很多的命令供我们配置。
如果你要配置那种很麻烦的vim,你可以下载一些插件,这些插件还要放在.vim这个目录里,比较麻烦,这里不是很推荐。
配置vim还有很多的命令,如果你们感兴趣,可以自己去找。当然嫌麻烦也没关系,因为我在这里已经找好了一个配好的,你们按照我的步骤直接用就行。
这个配置虽然很香,但是只支持centos 7.X。如果你的linux是其它的版本,还是自己慢慢配置吧~
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
粘贴好之后,直接回车就行了。
这个配置比较智能,代码写起来非常舒服,谁用谁知道~