Linux的写作日记:Linux基础开发工具(二):vim编辑器
前言
在上一篇文章,我向各位读者展示了Linux的目录权限以及第一个开放工具——yum的讲解,下面我们紧跟着上篇文章的步伐,继续进行着Linux基础开发工具的学习,今天我们要学习的是——vim编辑器的使用。
1.vim编辑器简介
1.vim编辑器是什么
编辑器想必各位都不陌生,一般来说,如果你是Windows用户,那么你的电脑上一定会有一个软件,叫做记事本,记事本就是一个最简单的编辑器,我们可以在里面写字、记点东西。
而Linux的世界里,也存在着一个家喻户晓的编辑器,它就是vim,你可以把它想象成Linux系统下的“超级记事本”——但它比记事本的功能要强大太多,也要复杂的多。可以说,vim是一款专注的编辑器,并且是一个多模式的编辑器。
当然,vim其实也是Linux下的一条指令~这点各位要记清
2.见一见vim
在真正认识vim之前,我先带领各位去见识一下vim编辑器的强大之处,当我们想要使用它时,仅仅通过vim + 文件名就可以实现。其界面图如下图所示,当然,我的vim编辑器是加了很多插件的,我会在讲完vim后,带领各位去配置一下自己的vim编辑器。
我在之前指令部分讲过,如果我们想要查看一个指令存放在哪,用which指令即可实现,所以请各位读者输入下面的命令。
sudo which vim
此时不难发现,vim是存在在bin目录下的,而我之前讲过,bin目录下存放的都是指令,所以从这就可以印证:vim是一个强大的记事本,并且还是一个指令,不过它的指令还是比较容易学习的,甚至我感觉我都不用说明,它的使用方法就是:
vim 文件名
使用方法就是如此的容易,下面我给各位先一览vim的界面。
那么下面废话不多说,开始进入vim的学习。
2.学习使用vim编辑器
我在上一小节就说过,vim是一个多模式的编辑器,这意味着编辑器有着多种模式,而接下来,正如上图所示,我们将会依次讲解这三种模式,希望各位不要知难而退哦~
1.命令模式
首先登场的选手就是命令模式,而命令模式其实就是我们输入相关的命令,通过相关的命令而完成我们想要的操作,例如快速将光标定位到第一行,最后一行,中间某一行等等,命令模式的存在,本意就是提高我们的效率的,关于为何提高效率,很简单就可以说明:你是一个程序员,当你的老板给你一个一万行代码的文件,想让你快速定位到2001行找错误的时候,三流的程序员会告诉你,直接通过上下左右键,等个几分钟,直接“快速”定位到2001行,主打一个迅速;二流的程序员会告诉你,直接通过鼠标的滚轮,直接滚到2001行,也很快,至少比上一个快多了(相对法秒杀了);而一流的程序员直接邪魅一笑,直接进入命令模式,输入相关的指令,一下子就到了2001行,直接秒杀了前两个好吧(仅仅就是娱乐一下,请各位前辈不要打我┭┮﹏┭┮)。这便是展示了命令模式的效率之高,下面我们就来学习命令模式相关的命令喽!
对了,当我们按键盘的ESC键的时候,就可以进入vim的命令模式。当然,我们处于其他模式的时候,按这个键也可以一键回到命令模式。当然,vim默认的就是命令模式
1.gg
这个命令是实现将光标快速定位到文件的开头,可谓是十分的好用,当我们处理一个十万行代码的文件时,此时当我们在中间的时候,可能会遇到想要去文章开头的需求,此时我们进入命令模式输入这个指令,就可以满足我们的需求。
2.n+gg
当我们想要快速定位到文章某一行的时候,这个指令就可以帮助我们实现。一般在处理大型数据的时候喜欢用这个。
3.shift+g
这个指令可以帮助我们实现快速定位到文章末尾,和第一行指令恰恰相反。
4.n+shift+g
这个指令也可以做到快速定位到文件的第n行。
5.hjkl进行上下左右光标移动
可能有读者看到这个指令的时候会懵,这个长玩意是什么东东?其实,这四个键对应着我们键盘的左、下、上,以及右,可以控制着光标的移动,这个时候可能有读者就好奇了,我们键盘的不是就有上下左右键吗?为什么还需要额外设置好这四个键位,其实,这和我们之前的键盘设计有关,看看下图。
此时上面的图就是之前前辈们用的老式键盘,仔细看,发现这个键盘并没有上下左右键,于是为了让当时的开发者方便光标的移动,于是设计好了这四个键位专门代表着方向,当然,就算是现在,也还是会有这样的键盘的,我相信的读我文章的朋友肯定有不少喜欢打FPS游戏的,磁轴键盘算是一个比较热门的键盘了,目前大多数的磁轴键盘的键很少,所以是没有上下左右这四个键位的,于是乎为了方便在vim进行光标移动,我建议读者还是知晓这个知识点的。
6.yy
当我们写代码的时候,难免会出现复制粘贴的时候,此时这个指令解决了复制的问题。
7.n+yy
当然,我们也是可以多行复制的,此时我们只要在yy前面加上我们想要复制行的数量,就可以实现多行复制。为了不让指令分类变多,我从这里给各位说好:如果我没有特别提出,那么之后的指令都是可以n+指令的。
8.p
有复制,就有粘贴,此时我们可以输入这个指令实现粘贴操作,此时会把目标结果粘贴到当前行的下一行。粘贴也是支持多行粘贴的,只要n+p就可以将内容粘贴n遍。
9.dd
讲完了复制粘贴,接下来我们还有一个经常使用的操作:剪切,此时输入dd指令就可以剪切当前行,之后输入p指令就可以进行粘贴;当然,如果你没有后续操作,那么dd指令同样可以当做删除指令使用。
10.x
我们在检查自己代码的时候,可能会遇到下面的情况:想要删除代码中的几个字符,此时我们就可以使用x指令来实现单个字符的删除了,当然,如果我们想要多个字符,那么依旧可以用n+x的方式进行多个字符的删除。
11.shift+·
当我们想要实现文本中的小写字母快速切换到大写字母的操作,就可以使用上面的指令,进行大小字符的快速切换。
12.r
当我们想要进行文本替换的时候,就可以使用这个指令,进行单个字符的替换;当然,我们想要替换多行,就可以使用n+r的操作进行多个字符的替换。当然,我个人感觉这么使用还是不太方便,vim的开发人员应该也是觉得这个指令用起来不太舒服,于是下面这个指令(也是一个模式的替换)就出现了。
13.shift+r
这个指令的作用是进入替换模式,这个模式的功能和它的名字是一样的,当我们想要大范围文本替换的时候,就可以进入替换模式进行文本的替换,由于这个模式没有什么可讲述的,所以我就不把它当做一个真正的模式讲述了。当然,如果我们想要
14.u
在我们日常工作的时候,可能会出现不小心删除一个重要函数的错误,这个时候,我们就需要进行撤销操作了,没错,vim也是具有撤销指令的,此时我们输入u即可完成撤销,当然,当我们退出vim,之后在进入vim时,就不能完成撤销了,因为此时vim是采用的当前的记录,当前由于我们什么都没干,因此想要撤销,就必须在删除重要信息时不退出vim编辑器。
15.ctrl+r
当我们完成撤销操作的时候,还有可能会遇到不想撤销的情况,此时我们按上面的指令,即可对撤销在进行一次撤销,因此,这两个指令可以看做是一个闭环的指令。如上图所示。
16.shift+zz
当我们想以命令模式进行vim编辑器退出的时候,输入此命令就保存并退出。
以上就是vim编辑器中命令模式的相关指令,这些指令并不是vim编辑器的全部,但是我个人认为这一部分是重点,因此我希望各位读者可以好好的掌握这些指令,下面我们进入插入模式的讲解。
2.插入模式
插入模式就是我们熟悉的编辑模式,说大白话就是,我们平常写代码什么的都是在插入模式进行的,当我们键盘输入a、i,o的时候,便可以进入插入模式,此时我们就可以进行代码的编写了,插入模式我就讲述这么多了,其实插入模式是三个模式中最简单的了,因为它不需要进行命令的填写,我们仅需记住如何进入插入模式即可。当然,插入模式是不可以自己退出的,如果我们想要退出vim的话,需要先敲击ESC键进入命令模式,之后输入shift+zz即可保存并退出。
3.底行模式
底行模式是除去命令模式,我个人认为第二复杂的模式了,它同样也需要记住一些相关的命令,这些命令都是比较容易的,因为它有些功能通过图片就可以看出具体的功能,因此我会搭配一些图片进行相关指令的讲解。
当然,在进入底行模式之前,我个人建议各位首先需要进入命令模式,因为命令模式可以看做是vim的基石,通过命令模式,我们可以进入插入模式,底行模式等等。当我们已经处于命令模式的时候,此时我们就可以输入:键进入底行模式了,接下来我要开始讲述相关的指令了。
1.w
这个指令代表着保存指令,当我们写上一段代码的时候,我建议各位还是保存一下自己写的代码,避免自己电脑因为各种问题从而让自己写的代码丢失了,这就得不偿失了(血的教训)。当然,如果我们w前面加上!,代表着强制保存,多用于适应一些无法普通保存的情况。
2.q
当我们想要退出文件的时候,除了在命令模式输入相关指令外,底行模式也可有退出文件的指令,注意:这个指令并没有保存的功能,因此我建议各位不要使用这个指令,除非你仅仅是观看文件。当然,这个指令前面加上!,也代表着强制退出。
3.wq
熟悉了前两个指令,这个指令的功能想必各位都知晓了,它代表着保存并退出,和Shift+zz的功能一样。同样的,这个指令前面也可以加~,代表着强制保存并退出,这在我们之后配置sudo的时候会遇到。
4.set nu
一般来说,我们的vim编辑器是不给我们展示行号的,当我们输入这个指令时,就可以添加行号。其效果图如下所示。
5.set nonu
这个指令可以进行取消行号的操作。
6.#+n
这个指令可以帮助我们跳转到相应行号,当然,最好搭配着第四个指令一起,因为从上往下数行号我认为还是不怎么优雅的。
7./关键字
当我们想要查找关键词的时候,就可以使用这个指令,先按下/键,然后在输入我们想要查找的单词,就可以快速定位到相应的关键词,如果第一次不是我们想要找寻的,那么我们可以按n键继续往后进行检索。
8.!command
当我们想要在vim进行bash操作的时候,就可以使用这个指令,就比如我想要在vim下通过man指令查询相关的函数,就可以输入!man 函数名,这个场景我们以后会经常遇到,希望各位掌握,效果图如下。
9.vs + other
之前我们在进行数据结构学习的时候,尝尝会遇到下面的场景:把头文件和源文件放到一个屏幕里进行找bug,在VS2022,我们仅需通过鼠标挪动文件,就可以实现分屏操作。在vim下,我们也可以进行分屏的操作,只需在底行模式输入:vs + 文件名即可,其效果如下所示。
10.ctrl+ww
当我们想要光标从左边的文件跳到右边的时候,输入这个指令就可以执行。
3.补充两个命令模式常用的指令
我们在写代码的时候,难免会出现多行注释的情况,此时仅仅依据我们上面所学习的知识,我们只能通过进入插入模式,一行一行的进行注释,可谓是十分的麻烦,所以此时我们就需要用到一个命令来完成注释的操作,不过这个命令是很复杂的,下面我会通过拆步的方式给各位一步一步讲解。
1.多行注释
1.按下ctrl+v
当我们在命令模式按下这个指令的时候,其实也是进入了一个比较特殊的模式,只不过目前我学习的比较浅,还不知道这个模式的名称,我先自己命名一番,我愿把它称其为多行书写模式。至于为何这么取名,看下面的步骤就容易知晓了。
2.hjkl进行光标的操作
此时我们需要通过光标进行上下左右的操作,此时我们可以选中上图的1-11行,如下图所示。
3.输入shift+i
此时我们输入这个指令,其实就是相当于进入了插入模式,此时我们光标会定义到第一行,此时我们在第一行输入//即可。
4.按下ESC键
当我们按下ESC键的时候,就会发现我们选中的那几行都被注释了,这便是多行注释的完整操作,看似很复杂,其实一点也不简单(bushi),只要我们多使用就好了。
2.多行去注释
我们有着添加注释的需求,自然也会有去掉注释的需求,此时各位依旧跟着我的脚步走,就可以完成多行注释,或者是多行字符的删除。
1.按下ctrl+v
依旧是进入这个模式。
2.hjkl进行行选择
依旧用这四个方向进位进行行的选取,此时我们需要旋球12行,还有往右移一列,如下所示。
3.d
之后我们直接输入d,就可以完成删除操作了,非常的容易。这就是多行注释删除的命令。
4.vim的配置
我在文章刚开始的就说过,我们的编辑器是可以进行配置的,就比如我们可以让界面变的更精致一些,让代码可以自动补全等等,想要实现上面的操作,我们就需要进行vim的配置,由于vim的配置比较繁琐,因此我就简单的给各位讲述一下如何进行vim的配置,不过各位放心,我会在讲完如何配置以后,直接给各位一个配置好的软件,这样你们的vim的编辑器就会和我的一样了。
1.配置文件的位置
在目录/etc下面,有一个叫做vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。当然,一般来说都是每个用户拥有自己的vim配置,因此我们很好在这个文件进行vim配置。一般我们都是从自己用户的主目录下,建立自己私有的配置文件,将其命名为:“.vimrc”。例如,在root的用户下,通常会存在这个文件,如果没有,那么就创建。不过我们现在一般都是普通用户,因此,我们可以在自己的家目录下建立这个文件。
2.常用的配置选项
这里我就懒得写了,因为我自己的vim编辑器都不是自己配置的,我直接抄的别人的((#^.^#))。
3.一键配置vim
VimForCpp: 快速将vim打造成c++ IDE,各位可以通过这个链接进行自行的配置,里面的大佬会告诉你如何进行配置,当然,这里我还是给各位提个醒:各位下载那个软件的时候一定要是普通用户,不然可能出现不可逆的错误,并且要按着人家的说法一步一步执行,不要一口吃撑一个胖子。当然,当你配置完成的时候,你可以重启的你的Xshell或者虚拟机,从而完成最后的配置。
5.关于sudo
可能有些读者看完我的上一篇文章,自己尝试进行了使用sudo指令,却发现,系统会报下面这个错。
这代表着系统并不信任你,此时想要解决这个问题,我们需要去到一个文件进行相关的用户配置,从而可以使用这个指令。
首先我们需要输入下面的指令,从而打开相应的配置文件。
vim /etc/sudoers
我们打开这个界面以后,可以先设置好行号,然后输入相应的命令到100行(一般都是),就是会出现下面这个界面
100行到101行其实都是被系统信任的用户,此时我们可以模仿上面的代码,将名字改为自己当前用户的名字即可。配置完以后,我们就可以使用sudo了。
6.总结
文章到这里,vim编辑器的相关内容我也是讲完了,我个人认为讲述的还是比较一般的,因为我感觉我的文学功底还是太浅了,导致有些操作我知道,但我无法用文字表达出来,如果有些读者拗口的地方,希望读者可以为我指正,我会改掉这些毛病的。不知不觉也是来到了九月末了,还记得两年前,我还是个大一新生,而现在已经成为了大三老登,有点怀念过去了,感觉我越来越成了念旧的人了。伤感话就不多说了,天气逐渐变冷,各位读者注意保暖。一起学习的时光总是短暂的,那么各位大佬们,我们下一篇文章见了。