专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C++初阶算法
欢迎大家点赞,评论,收藏。
一起努力,一起奔赴大厂
目录
一.vim简介
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。
二.vim的基本概念
vim包含很多种模式,但是最重要的是底行模式,普通模式,插入模式,普通模式是我们控制光标对字符的删除以及切换到我们的底行模式和插入模式,底行模式是进行文本的保存以及一些操作,插入模式是我们对文本进行修改底行模式和插入模式我们都可以按esc进行返回普通模式,普通模式中我们想进入插入模式我们需要按i才可以进入,我们普通模式想进入底行模式需要输入:才能进入,我们可以画图为:

其中底行模式和插入模式不可以进行直接互换。
三.vim的基本操作
3.1准备
在进行vim的基本操作前我们需要先下载vim,我们输入下面的指令进行vim的下载
cpp
sudo yum install -y vim
下载完成后我们创建一个文件然后使用vim打开,具体操作可以参考下面的指令第一行是创建文本,第二行是使用vim进行打开
cpp
>>test.c
vim test.c
输入完成后我们可以看到出现了我们的vim编译器

由于我是配置完成的vim,所以下显示的可能和大家的有些不同。此时我们就在我们的普通模式,我们输入i然后进行对文本的初始编写。
cpp
1 #include<stdio.h>
2
3 int main()
4 {
5 printf("Hello Linux\n");
6 return 0;
7 }
我们此时可以看到:

3.2光标在普通模式和插入模式中的移动
在普通模式和插入模式中我们想和以前一样使用鼠标是不可能的,这时候需要我们的键盘出手了,在普通模式中我们有两种方法进行光标的移动,一种是我们的上下左右移动键,第二种就是我们的
HJKL
这四个键,其中H是向左移动一个字符,L是向右移动一格字符,J是向下移动一个字符,K是向上移动一个字符。例如我们的光标在第7行的}哪里我们输入K可以看到:

插入模式中我们需要通过上下左右键进行移动,不能通过HJKL进行移动。
3.3普通模式
3.3.1复制粘贴
在这里复制粘贴包括两种复制粘贴一种是复制一行然后粘贴一种是复制n行然后粘贴,我们先说第一种复制一行然后粘贴,我们在普通模式下输入
cpp
yy

这时候我们光标在的那一行就被复制了我们再输入
cpp
p
就会在下一行进行复制

接下来是复制n行然后复制,我们先输入n的值然后输入yy例如我们想复制3行,我们把光标移动到想复制的位置,然后输入
cpp
3yy

我们再输入
cpp
p

3.3.2剪切粘贴
同样我们的剪切粘贴也分为两种一种是剪切一行然后复制一行,另一种是剪切n行然后复制n行,我们先看第一种我们把光标移动到想要剪切的位置输入
cpp
dd

我们再输入
cpp
p

我们再看另一种剪切n行然后粘贴例如我们想剪切3行,我们输入
cpp
3dd

然后输入
cpp
p

3.3.3多行复制
我们的复制也可以进行多行复制例如我们想复制10000次第8行我们先复制第8行然后输入
cpp
10000p

3.3.4光标的移动
在上面我们说了光标的上下左右移动如果我我们想将光标移动到开始位置呢?我们可以输入
cpp
gg

如果我们想让光标移动到结尾位置我们可以输入(必须大写)
cpp
G

如果我们想让光标移动到n位置,例如我们想让光标移动到5000的位置我们输入
cpp
5000gg

我们还可以让光标在一行中进行移动,移动到这一行的开始和结尾,例如我们想移动到这一行的结尾我们输入
cpp
$

我们想移动到这一行的开始我们输入
cpp
^

我们还有逐个单词的移动例如我们想向后移动一个单词,我们输入
cpp
w

向前移动一个单词,我们输入

3.3.5撤销和撤销上一次撤销
我们有时候会遇到这种情况,我们不小心多写一段或者少些一段内容,或者不小心删除一段内容,这时候我们需要用到我们的撤销功能,撤销的指令就是
cpp
u
例如我们不小心多复制了10000行如下:

这时候我们输入u就可以把那1000行进行撤销

假如我们不小心多撤销了例如:

我们就需要对撤销进行撤销,这时候我们需要输入指令
cpp
ctrl r

3.3.6批量注释和批量取消注释
我们写代码时经常会遇到需要注释的地方,我们应该怎样批量注释呢?例如我们想将500行到510行进行注释,我们先将光标移动到500行

我们先输入
cpp
ctrl v

然后进行移动进行选中(HJKL)

然后输入
cpp
I

然后输入
cpp
//

然后输入两次esc

这样我们的批量注释就完成了。
对于我们的批量取消注释,我们先输入
cpp
ctrl v

然后进行选中

然后输入、
cpp
d

这样批量取消数组就完成了。
3.4底行模式
3.4.1退出保存
我们先进入底行模式,也就是先进入普通模式然后输入:就会进入到我们的底行模式

我们输入
cpp
wq
就可以完成保存退出。
3.4.2强制执行
有时候我们会遇到不能执行的指令,例如某一个文本我们不能wq进行保存退出我们就可以输入
cpp
!wq
完成强制保存退出。
利用!我们还可以完成一些操作,即使不退出vim我们也可以执行指令

我们现在在底行模式中我们想创建一个test2.c的文件我们输入
cpp
! touch test2.c

我们退出来就可以看到

3.4.3多窗口打开文本
我们想要打开多个文本,例如我们想将test.c和test2.c同时打开,我们先用vim打开test.c

然后我们进入底行模式输入
cpp
vs test2.c

此时的光标在哪我们就是控制哪一个文本,这样我们就可以完成多文本的编写,我们关闭文本就是关闭此时的文本,我们看下边

此时对test2.c进行编写我们想关闭test2.c在底行模式中输入
cpp
wq

我们重新打开,如果我们想进行编写test.c但是光标在test2.c我们输入
cpp
ctrl w
四.vim一键配置
注意这个配置需要Centos7,并且必须不能在root账号中进行,我们直接输入指令
cpp
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
卸载方法是输入指令
bash ~/.VimForCpp/uninstall.sh