Linux环境基础开发工具->vim
引入:vim是什么?
vs叫作继承开发环境,我们可以在里面编辑代码,调式代码,运行代码....这种叫集成开发环境;而vim只用来编辑代码,也就是类似于在windows上打开一个记事本来写代码的操作
集成开发环境有他的好处,但一个人要想成长,一定是自己用不同的工具完成每一步
所以vim就是Linux的代码在编辑这一步所需要的工具
一:用vim写一个打印程序
多得不说,先用vim写上一个代码,需要注意的是,你可以touch创建.c文件再vim打开该文件进行编辑;也可以直接vim上一个.c文件进行编辑。但是一定要是.c文件,因为你编辑代码的目录,肯定是要执行的,所以需要gcc生成一个.out的可执行文件,原因就是因为gcc只能对.c文件进行编译,所以一定是要.c文件
所以下面我们写一个程序,引出三个模式
1:vim上一个.c文件
2:写一个打印程序
进入之后是这样的页面:
此时处于命令模式,输入i切换到插入模式:
然后开始写一个打印程序:
3:退出并保存
写完程序后,先按Esc键切换到底行模式,然后再输入:,再输入wq,再按回车
: 是英文的冒号,所以等于在英文输入法下进行shitf + ;
①:按Esc键切换到底行模式
INSERT字样 消失了 则代表进入了底行模式
②:再输入:,再输入wq,再按回车
③:gcc编译,然后./a.out执行文件,显示打印效果
所以我们现在知道了三个模式,这三个就是vim最常用的模式
命令模式 插入模式 底行模式
注意:
命令模式 也可以叫作 正常模式
底行模式 也可以叫作 末行模式
下面开始细讲三个模式的切换和操作
二:三种模式的切换
1:三种模式的用途
命令模式:我们可以控制屏幕光标的移动,字符、字或行的删除,复制粘贴,剪贴等操作。
插入模式:进行文字输入,该模式是我们使用最频繁的编辑模式。
底行模式:将文件保存或退出,也可以进行查找字符串等操作
2:模式的切换
我们在编译代码的时候,需要用到这三个模式,所以要知道如何进行模式的切换
如图:
解释:
不知道当前处于什么模式,只需要看最底行就行:底行是INSERT则是插入模式;底行是冒号则是底行模式;底行什么都没有或者是NEW FILE则是命令模式!
要换什么模式,都可以无脑的Esc回到命名模式,这样如果想要命名模式正好;反之想要插入模式则输入a i o,要底行模式则英文冒号即可!
Q1:为什么插入模式不能切换到底行模式?
A1:因为插入模式你输入什么都是往代码里面写,你这时候属于英文冒号,依然是被视为代码,而不是用来切换到底行模式,所以要先退回到命令模式
Q2:为什么底行模式不能切换到插入模式?
A2:你处于底行模式,你属于i o a ,都会被视为底行模式的操作,而不是用来切换到插入模式,所以要先Esc切换到命令模式
总结:
【命令模式】切换至【插入模式】
1)输入「i」:在当前光标处进入插入模式。
2)输入「a」:在当前光标的后一位置进入插入模式。
3)输入「o」:在当前光标处新起一行进入插入模式。
①:命令模式切换到插入模式
如图:(绿色代表光标位置)
②:【命令模式】切换至【底行模式】
输入「Shift+;」即可,实际上就是输入「:」。
③:【插入模式】或【底行模式】切换至【命令模式】
插入模式或是底行模式切换至命令模式都是直接按一下「Esc」键即可。
注意:之前在第一大点里面我们想要退出vim,就是在底行模式输入wq然后回车的
wq意味着保存并退出,可以单独的w也可以单独的q
3:没有正常退出vim的后果
但我们有可能因为各种原因导致没有按照底行模式,然后wq退出,比如断网啊,云服务器闪退啊等等,这时候,当我们再vim进入文件的时候,会出现以下界面:
该页面想告诉你:
因为你没有按照正确的方式保存并退出vim(如 Vim 崩溃、系统断电、强制关闭终端等),vim贴心的给你保存了,保存到了一个隐藏文件(又叫交换文件).file.c.swp 中,现在要让你选择选项:
Vim 让你选择如何处理这个文件.file.c.swp:
选项 | 说明 | 适用场景 |
---|---|---|
[O]pen Read-Only | 以只读模式打开文件,不能修改 | 仅查看文件,不修改 |
[E]dit anyway | 忽略交换文件,直接编辑 | 确认没有其他 Vim 在编辑,且不需要恢复旧数据 |
[R]ecover | 尝试恢复未保存的更改 | 上次编辑崩溃,可能有未保存内容 |
[D]elete it | 删除交换文件 | 确定不需要恢复,或已经恢复过 |
[Q]uit | 退出 Vim | 暂时不处理 |
[A]bort | 中止操作(类似 Ctrl+C ) | 取消当前操作 |
所以我们一般直接d删除这个隐藏文件,或者r恢复没来得及保存的代码
注意:选项不区分大小写
此时我们在file.c位于的目录中也是通过ls -la指令看见这个一隐藏文件:
总结:一定要正确的退出vim编辑器,养成好习惯
三:命令模式的操作
注意:n+什么,这里的+不用手动输入 只是为了表示两者组合的意思
命令模式的操作是最多的,也是最有意思的
当我们vim进入文件的时候,我们会发现我们的鼠标不能控制光标的移动,这是因为,vim产生的时候,鼠标还没产生,所以我们无法用鼠标来控制光标
Q:那该怎么控制光标?
A:当然在命令模式下 有一些列的操作指令来控制光标
1:控制光标
【移动光标】
1)按「k」:光标上移。
2)按「j」:光标下移。
3)按「h」:光标左移。
4)按「l」:光标右移。
5)按「$」:移动到光标所在行的行尾。 (shift + 4)
6)按「^」:移动到光标所在行的行首。 (shift + 6)
7)按「gg」:移动到文本开始。
8)按「Shift+g」:移动到文本末尾。 (G)
9)按「n+Shift+g」:移动到第n行行首。 (n+G)
10)按「n+Enter」:当前光标向下移动n行。(n+回车)
11)按「w」:光标从左到右,跳到下一个单词的开头。
12)按「e」:光标从左到右,跳到下一个单词的结尾。
12)按「b」:光标从右到左,跳到上一个单词的开头
Q:hjkl不就是小键盘的上下左右吗,岂不是多此一举?
A:vim产生的时候,我们的键盘还没有小键盘这个概念,所以没有上下左右四个键位,如下:
老式键盘,hjkl上面还贴心的标注了方向
记忆技巧:
j->jump 跳下去 所以是下;k->King 所以是上;h位于四个键的最左面所以是左,同理l是右
Q:n指的什么?
A:n就是数字,比如 「n+Enter」,则在键盘上输入5 然后回车,则光标向下移动5行
Q:w e b 的应用场景是什么?
A:当代码很长的时候,我们不想一个个的移动光标,以单词为单位移动会更快!
2:控制内容
之前说过,除开控制光标,命令模式还可以控制内容,进行删除,复制粘贴,剪贴.....
①:复制粘贴
复制粘贴】
1)按「yy」:复制光标所在行
2)按「n+yy」:复制光标所在行开始往下的n行
3)按「yw」:将光标所在位置开始到字尾的字符复制 (看似多余实则为了n+yy)
4)按「n+yw」:将光标所在位置开始往后的n个字复制
5)按「p」:将已复制的内容在光标的下一行粘贴上。
6)按「np」:将已复制的内容在光标的下一行粘贴n次。
例子:
②:剪切
剪切】
1)按「dd」:剪切光标所在行。
2)按「n+dd」:剪切光标所在行开始往下的n行。
3)按「p」:将已剪切的内容在光标的下一行粘贴上。
4)按「n+p」:将已剪切的内容在光标的下一行粘贴n次。
解释:剪切即将内容去掉了,但是仍然可以复制
③:删除
删除】
1)按「x」:删除光标所在位置的字符。
2)按「n+x」:删除光标所在位置开始往后的n个字符。
3)按「X」:删除光标所在位置的前一个字符。
4)按「n+X」:删除光标所在位置的前n个字符。
5)按「dd」:删除光标所在行。
6)按「n+dd」:删除光标所在行开始往下的n行。
解释:其实用得最多的还是1和dd
④:撤销
【撤销】
1)按「u」:撤销。
2)按「Ctrl+r」:恢复刚刚的撤销。
解释:命令模式的任何操作后悔了,均可u进行撤销,而你对撤销后悔了,不能用u撤销(否则套娃了),而是要用Ctrl+r,这里的+,意思是Ctrl和r一起按的意思
⑤:其他操作
大小写切换】
1)按「~」:完成光标所在位置字符的大小写切换。
2)按「n~」:完成光标所在位置开始往后的n个字符的大小写切换。
【替换】
1)按「r」:替换光标所在位置的字符。
2)按「R」:替换光标所到位置的字符,直到按下「Esc」键为止。
【更改】
1)按「cw」:将光标所在位置开始到该单词的字符删除,并进入插入模式。
2)按「cnw」:将光标所在位置开始往后的n个字删除,并进入插入模式。
【翻页】
1)按「Ctrl+b」:上翻一页。
2)按「Ctrl+f」:下翻一页。
3)按「Ctrl+u」:上翻半页。
4)按「Ctrl+d」:下翻半页。
解释:值得一提的是
a: 「~」:可以长按,它会一个一个的变成大写,到合适的时候再停下来
b:「r」:要先按r,然后再按自己想替换的字符,就能替换了
c:「R」:先按R,此时就进入了替换模式,然后你可以输入什么,输入几个,就从光标往后给你替换几个,Esc退出替换模式(是的,这也是一种模式,知道就行)
d:「cw」,比如你光标是在printf的p,那么会删除掉printf,进入插入模式;若你光标是在r,这删除rintf,保留p,进入插入模式
最常用的还是「~」和「R」,其他了解即可
四:底行模式的操作
1:行号设置
【行号设置】
1)「set nu」:显示行号。
2)「set nonu」:取消行号。
打代码的都喜欢显式行号,vim也提供了!
2:保存退出
【保存退出】
1)「w」:保存文件。
2)「q」:退出vim,如果无法离开vim,可在「q」后面跟一个「!」表示强制退出。
3)「wq」:保存退出。
3:分屏
【分屏指令】
1)「vs 文件名」:实现多文件的编辑。
2)「Ctrl+w+w」:光标在多屏幕下进行切换。「Ctrl+w+w」是在命令模式下进行,而不是底行模式!
经常需要两个文件之间来回查看,比如一个头文件一个.c文件,此时 「vs 文件名」即可,如下:
Q:那此时我怎么知道我在那个文件中啊?
A:看光标即可,如上图光标在左侧,即test.c文件中,此时你执行什么都是在对test.c执行
此时「Ctrl+w+w」则将光标转移到另一个文件中!
注意:「Ctrl+w+w」是在命令模式下进行,而不是底行模式!
4:不退出vim执行指令
执行指令】
1)「!+指令」:在不退出vim的情况下,可以在指令前面加上「!」就可以执行Linux的指令,例如查看目录、编译当前代码等。
解释:每次都退出vim,然后再在Linux下执行指令,过于麻烦,所以 底行模式下「!+指令」即可
例子:
我们在vim中进行ls指令的执行
会跳转到外面目录显式指令对应的内容
然后再按回车,则继续vim!
五:vim的配置
Q:哎,我觉得vim编辑代码是真的麻烦啊!又没缩进,又没符号补齐,又没提示,全靠手搓!
A:DIY配置一下vim即可
配置肯定是站在普通用户的角度进行配置的,你进公司也不可能直接就是root
1:创建.vimrc文件
每个普通用户的家目录下,需要创建一个.vimrc文件,是的,它是一个隐藏文件,如果有了,则不用再创建了,如下:
2:配置 .vimrc文件
用vim打开.vimrc文件,补上一个显示行号的指令:
然后wq退出,此时再去vim编辑任何一个文件,都会又行号了:
所以只要你想要什么,就在.vimrc文件中,进行相应的补充,不知道的指令就去网上查一查,但是想要配置出一个好用的vim是非常的不容易的,某些vim配置还需要使用插件,建议不要自己一个个去配置。
但是作为我的粉丝,博主已经准备好了❀(#^.^#):
直接执行以下指令(想在哪个用户下让vim配置生效,就在哪个用户下执行该指令,不推荐直接在root下执行):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
注意:(centos 7 才能用这个指令 因为博主就是centos7哦)
然后按照提示输入root密码:
然后等待安装配置,最后手动执行source ~/.bashrc即可。
配置完成后,像什么自动补全、行号显示以及自动缩进什么的就都有了。
六:小技巧和易错点
1:批量注释和取消注释
①:Ctrl V
解释:左下角显式V-block 就对了
②:hjkl进行注释区域的选择
解释:博主j到了行号7的位置
③:输入大写I
解释:输入 I 之后呢,左下角回到插入模式,这就对了
④:输入//
⑤:点击Esc
解释:把所选区域都进行注释了
批量取消注释,类似道理,不再赘述
批量化取消注释:
1.ctrl v
2.hjkl
3.d
2:退出的方式
底行模式想保存退出的时候,记住是wq,而不是qw,否则会一直不让你退出,此时你qw!强行退出,下一次进来就会生成隐藏文件(交换文件)
另外 vim的时候,可以在命令模式下ZZ(两个大写的Z),也可以退出vim编辑,但是不推荐,还是老老实实的wq退出
七:操作汇总
vim命令模式各命令汇总
【移动光标】
1)按「k」:光标上移。
2)按「j」:光标下移。
3)按「h」:光标左移。
4)按「l」:光标右移。
5)按「$」:移动到光标所在行的行尾。
6)按「^」:移动到光标所在行的行首。
7)按「gg」:移动到文本开始。
8)按「Shift+g」:移动到文本末尾。
9)按「n+Shift+g」:移动到第n行行首。
10)按「n+Enter」:当前光标向下移动n行。
11)按「w」:光标从左到右,从上到下的跳到下一个字的开头。
12)按「e」:光标从左到右,从上到下的跳到下一个字的结尾。
12)按「b」:光标从右到左,从下到上的跳到上一个字的开头
【删除】
1)按「x」:删除光标所在位置的字符。
2)按「nx」:删除光标所在位置开始往后的n个字符。
3)按「X」:删除光标所在位置的前一个字符。
4)按「nX」:删除光标所在位置的前n个字符。
5)按「dd」:删除光标所在行。
6)按「ndd」:删除光标所在行开始往下的n行。
【复制粘贴】
1)按「yy」:复制光标所在行到缓冲区。
2)按「nyy」:复制光标所在行开始往下的n行到缓冲区。
3)按「yw」:将光标所在位置开始到字尾的字符复制到缓冲区。
4)按「nyw」:将光标所在位置开始往后的n个字复制到缓冲区。
5)按「p」:将已复制的内容在光标的下一行粘贴上。
6)按「np」:将已复制的内容在光标的下一行粘贴n次。
【剪切】
1)按「dd」:剪切光标所在行。
2)按「ndd」:剪切光标所在行开始往下的n行。
3)按「p」:将已剪切的内容在光标的下一行粘贴上。
4)按「np」:将已剪切的内容在光标的下一行粘贴n次。
【撤销】
1)按「u」:撤销。
2)按「Ctrl+r」:恢复刚刚的撤销。
【大小写切换】
1)按「~」:完成光标所在位置字符的大小写切换。
2)按「n~」:完成光标所在位置开始往后的n个字符的大小写切换。
【替换】
1)按「r」:替换光标所在位置的字符。
2)按「R」:替换光标所到位置的字符,直到按下「Esc」键为止。
【更改】
1)按「cw」:将光标所在位置开始到字尾的字符删除,并进入插入模式。
2)按「cnw」:将光标所在位置开始往后的n个字删除,并进入插入模式。
【翻页】
1)按「Ctrl+b」:上翻一页。
2)按「Ctrl+f」:下翻一页。
3)按「Ctrl+u」:上翻半页。
4)按「Ctrl+d」:下翻半页。vim底行模式各命令汇总
在使用底行模式之前,记住先按「Esc」键确定你已经处于命令模式,再按「:」即可进入底行模式。【行号设置】
1)「set nu」:显示行号。
2)「set nonu」:取消行号。
【保存退出】
1)「w」:保存文件。
2)「q」:退出vim,如果无法离开vim,可在「q」后面跟一个「!」表示强制退出。
3)「wq」:保存退出。
【分屏指令】
1)「vs 文件名」:实现多文件的编辑。
2)「Ctrl+w+w」:光标在多屏幕下进行切换。
【执行指令】
1)「!+指令」:在不退出vim的情况下,可以在指令前面加上「!」就可以执行Linux的指令,例如查看目录、编译当前代码等。
感谢该博客提供素材(#^.^#):Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)_yum install makefile-CSDN博客