Linux基础工具——vim

在这里插入图片描述

vim

引入

回顾我们之前在windows环境使用Visual_Studio进行编程,其能够编写代码、编译代码、运行代码,并且能够支持各种各样的语言,我们称其为IDE —— 集成开发环境
而vim只是用于编写代码,是一款编辑器,是用来操作文本的工具,vim是以多模式,来进行高效编写的工具,有三种常用的模式,分别是命令模式、插入模式、底行模式

需要大家明白的是,vim工具初期会需要记忆很多东西,用起来不顺手,但后面熟悉了会很舒服,希望大家能够坚持!

vim filename 能够进入vim编辑器
在这里插入图片描述
在这里插入图片描述
打开是这样的,此时不要按任何键,接下来就来介绍介绍vim中的常用的三种模式

命令模式

命令模式是vim的默认模式,此时,键盘上的所有键所代表的含义,就和之前的键盘不一样了,此时的任何输入,vim都会将其当成指令/命令。
下面我先随意编辑一段代码,然后来通过这段代码讲解命令模式下的一些常用命令
在这里插入图片描述
我们现在对这段代码进行指令操作

光标定位指令

vim中光标就是那个绿色方块

  1. 上下定位:
    gg ———— 点击g两次,光标定位到文本开头位置
    在这里插入图片描述
    G ———— Shift + g 光标定位到本文结尾处
    在这里插入图片描述
    nG ———— 先输入一个数字,然后Shift + g,光标定位到第n行
  2. 左右定位
    $ ———— Shift + 4,定位光标在所在行的最右侧
    在这里插入图片描述

^ ———— Shift + 6,定位光标到所在行的最左侧(最左侧的字符处)
在这里插入图片描述
在这里插入图片描述
我们在vim中也称 $ ^ 是锚点
w ———— 向右按单词为单位移动
b ———— 向左按单词为单位移动
在这里插入图片描述

  1. 上下左右定位
    h j k l ———— 分别为左下上右移动,这四个可以靠他们在键盘上的位置来记忆,最左边就是向左移动,最右边就是向右边移动,k在很多游戏里面是跳跃,那就是向上,j就是向下了
    当然,也可以用 ← ↓ ↑ →,来进行上下左右移动,h j k l是为了应对早期键盘没有← ↓ ↑ →的情况而出现的。

复制粘贴 剪切 撤销

(n)yy ———— 点击y两次,复制光标所在行,如果前面带上了数字n,那么就是以所在行为起始,复制n行
(n)dd ———— 点击d两次,剪切光标所在行,如果前面带上了数字n,那么就是剪切光标所在行,向下的n行
(n)p ———— p,粘贴刚才复制或者剪切的内容到光标所在行的下一行,如果有数字n,俺么就是粘贴n次到光标所在行的下一行
(n)u ———— 撤回刚在的操作,带上n,撤回n次
R ———— Ctrl + r,对撤回操作进行撤回,类似于Windows下的Ctrl + Shift + z

内容替换

Shift + ~ ———— 键盘数字1234左边的那个’~',实现大小写相互转换,如果是非英文字符,就什么也不做
并且Shift + ~ ,一直按住,就能快速转换改行光标后面所有的英文字符大小写
(n)r + 目标字符 ———— 将光标所在字符改成目标字符,如果前面带上n, 就是以光标作为起点,将后面n个字符修改成目标字符
(n)x ———— 把光标所在位置的字符替换为空(替换为空,其实也就是删除),有n就是一次性删多个

如果我们想要大量替换文本,上面的Shift ~ 、r和x,难免效率低下,因此这里就会引入一个新的模式,批量化替换模式REPLACE
R ———— Shift + r,在这个模式下,我们的所有输入都会替换原来的文本,其实也就是Windows中,的Insert改写模式,新文字会取代现在位置的文字,每个键盘Insert的位置都不太一样,并且有可能在设置中默认是禁掉了Insert了,或者是某些应用软件,禁掉了Inert模式。
进入了批量化替换模式之后,如果想要回到命令模式(默认模式),点击键盘右上角的ESC即可

上面这些指令,大多数都不好一张图去显式,做gif也很麻烦,大家自行在xshell中多试试

插入模式

在命令模式下点击 i ,即可进入插入模式,在插入模式下,就能够正常编写代码了
,同样是按ESC回到命令模式

底行模式

在命令模式下Shift + ; 即可进入底行模式,其实也就是在vim编辑器左下角写上一个分号 : 写了这个分号之后,所有的输入,就来到了底行中
在底行模式下

保存与退出

q ———— 退出vim
w ———— 保存vim当前编辑的内容
wq ———— 常用组合,保存并退出
在q和w和wq后面加上 ! ,那么就是强制XX,强制退出,强制保存等,强制的操作,一般用于以下情况:

  1. 当文件是只读或者没有写权限时,使用 :w 命令保存文件时会提示“E45: ‘readonly’ option is set”的错误,此时可以使用 :w! 命令绕过只读文件的保护机制,进行强制保存。
  2. 当我们不想要进行任何修改时,例如vim显示“WARNING: The file has been changed since reading it!!!”时,表示文件已经被其他程序修改过了,此时可以使用 :q! 命令强制退出vim,不管是自己、他人、其他程序对该文件做出了修改,我们都对其进行舍弃,以保留原始文件。
  3. 当vim在执行一些操作时出现错误,例如“E514: write error (file system full?)”,表示磁盘空间已满,此时可以使用:q!命令强制退出vim,舍弃修改内容
  4. 如果文件被其他人、其他程序修改了,但是我们想要保留我们自己的修改内容,覆盖其他人、其他程序的修改内容,那么就使用:wq!
    也就是说,在我们决定使用强制的操作时,需要权衡利弊,万分小心。

如果用vim file,打开未存在的file文件?
依旧可以进入vim,但是此时,文件还未被保存在磁盘上,而是还在内存中,只有用了:w,才会在磁盘上形成一个file文件,那如果我们不保存,直接:q,那我们对这个文件的所有编辑,都没咯~

执行外部指令

在底行模式中我们以!开头,可以在不退出vim的情况下,执行外部命令,比如
:! gcc code.c
在这里插入图片描述

! ./a.out
在这里插入图片描述
在这里插入图片描述

多文件操作

多文件操作也称为分屏操作,在命令行模式下使用 :vs filename 来打开另一个文件
在这里插入图片描述
此时Ctrl + ww,就可以切换当前控制的文件,注意光标所在文件,此文件即是当前操作的文件

然后 :wq就可以关闭当前的文件

搜索

类似于windows中Ctrl + F的查找功能,对所查找内容进行高亮(high light)
以 / 开头,查找内容
:/main —— 查找main
在这里插入图片描述
:/printf —— 查找printf
在这里插入图片描述

不过会发现,如果我们输入:/main,回车后,发现,所查找的内容就一直高亮了,那我们就还需要取消高亮的指令
:/nohlsearch —— no high light search

其他功能

此时,应该有些同学,会觉得vim非常难用,没有行号,没有语法高亮,没有语法补全,用着难受
:set nu —— 调出行号
:set nonu —— 去掉行号

我们还有很多功能,都是可以通过命令,调出来辅助我们更方便的使用vim,但是,是否我们每次打开vim的第一件事,一大堆命令,去得到一个更方便的vim?
不是!我们可以通过修改vim的配置文件,来改变打开vim时的初始状态,我们后面部分会讲到vim配置

我这用一张图,来简洁的表示几种模式的关系:
在这里插入图片描述

常用操作 - 批量化注释

Ctrl + V - 进入 V-BLOCK,然后 hjkl 左下上右移动选中所需注释的区域 然后Shift + i,双斜杠注释一行,然后esc,回到命令行模式,即可批量化注释
同时,批量化解除注释:Ctrl + V,然后选中区域,按d既可

意外情况

在我们意外退出vim编辑器的时候,可能会出现.XXX.swap文件,然后vim进入XXX文件的时候会有弹窗:
在这里插入图片描述
这种情况,根据需求,选择下面的选项,一般来说,我们会选择R - Shift + r,此时会进入到vim,然后查看代码情况,然后保存退出,但是再次打开这个文件时,会发现还是会有上面的弹窗,此时我们ls -a会发现,该目录下有一个隐藏文件.test.c.swap,我们只需要将其删除,之后就不会有弹窗了。
在这里插入图片描述

配置vim

在家目录下创建一个配置文件(touch .vimrc),配置好后,在我们vim里面写代码的时候会有更多的便捷,比如语法高亮,比如括号补全、比如自动缩进(当然配置文件还可能会涉及到一些插件,并不是敲敲代码简单就能完全解决的)
.vimrc —— 配置文件名

向配置文件中写内容——给vim添加配置项
比如写入:set nu 后,打开vim,就出现了行号
在这里插入图片描述
当然配置文件是一个比较复杂麻烦但不重要的话题,我这里不过多赘述,大家只需要明白配置文件的相关概念,以及如何操作即可,可以在网上寻找别人已经配置好的文件,CV一下就行了

需要注意的是.vimrc配置文件影响的只是该家目录下的vim配置,如果 cd /或者cd /home/other_user,这些地方就没有我们之前在家目录下配置的内容

我们同时也不推荐直接给root进行配置,对root进行配置就能够做到配置全覆盖,但是这样不好,会破坏各个用户的独立性,并且不方便管理,从学习的角度来讲,虽然vim配置不重要,但是多操作几次还是好的

sudo

在这里插入图片描述
上图中我用happy_grass执行sudo,想在根目录下创建一个文件,此时,给出了一些提示,希望我们尊重他人隐私,输入前多想想,更大的权力意味着更大的责任,然后我们输入了我们自己的密码后,提示我们happy_grass is not the sudoers file 也就是说我们的happy_grass账号没有在白名单中,不被系统信任,也就不能用自己的账号去做root的事情

这里有三种名单:
白名单(被信任,啥也能做)、黑名单(啥也不能做)、其他名单(可询问)
我们默认是在其他名单中,可以询问

只有当我们在白名单中时能够使用sudo指令,那我们就需要把happy_grass账号放到白名单中,白名单其实也就是一个文件,我们只需要在该文件中添加我们的用户名即可,这种操作也称为:更新配置文件
我们查看:ls /etc/sudoers
在这里插入图片描述
发现这里只有root有读权限,好像不能写入?不必慌张,我们可以使用:w!的方式进行强制保存,然后我们就可以:q退出了,我们切换到root账号打开这个文件

在这里插入图片描述
在100行左右,这里会有一个root ALL=(ALL) ALL
我们这里就可以把普通用户添加在这里,比如我的upset_grass账号就已经添加在这里了
然后:w! :q既可以完成配置

之后就能够正常使用sudo进行普通用户使用root权限做事了(而不需要登陆root账号进行操作)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失去梦想的小草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值