【Linux修炼】5.vim详解

news2024/11/20 19:27:37

在这里插入图片描述每一个不曾起舞的日子,都是对生命的辜负。

Linux-yum&vim工具的使用

  • 本节目标
  • 1. Linux 软件包管理器 yum
    • 1.1 什么是软件包
    • 1.2 关于rzsz
    • 1.3 查看软件包
    • 1.4 如何安装软件
    • 1.5 如何卸载软件
  • 2. Linux编辑器-vim的使用(重点)
    • 2.1 什么是vim?
    • 2.2 vim的三种模式
      • 2.2.1 命令模式:
      • 2.2.2 插入模式:
      • 2.2.3 底行模式:
      • 2.2.4 三种模式的总结:
    • 2.3 vim的配置
  • 3. sudo权限的配置
    • 3.1 sudo配置的步骤
    • 3.2 以普通用户的身份验证sudo
  • 4. 总结

本节目标

  • 1. 学习yum工具,进行软件安装

  • 2. 掌握vim编辑器的使用,学会vim的简单配置

  • 3. 配置sudo的方法

1. Linux 软件包管理器 yum

1.1 什么是软件包

  • 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.
  • 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
  • 软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
  • yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat,Centos等发行版上.

1.2 关于rzsz

这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.
安装完毕之后可以通过拖拽的方式将文件上传过去.

注意事项

关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!(云服务器则不用,因为其自动连接网络)

1.3 查看软件包

通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:

yum list | grep lrzsz

image-20221017122026562

注意事项:

  • 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
  • “x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
  • “el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
  • 最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.

1.4 如何安装软件

对于安装软件我们既可以sudo提升用户权限安装,也可以用root身份安装,安装之后的软件所有用户都是共用的,但我自己的sudo尚未提升权限,因袭这里采用root身份安装

通过 yum, 我们可以通过很简单的一条命令完成 gcc 的安装.(root身份)

yum install lrzsz

yum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装.
出现 “complete” 字样, 说明安装完成.

注意事项:

  • 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
  • yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
  • 如果 yum 报错, 请自行百度.

1.5 如何卸载软件

仍然是一条命令:(和安装一样,需要sudo或者root)

yum remove lrzsz

因此,对于yum,我们最主要的就是了解其安装和删除的指令,即:

  • 安装指令:yum install 文件
  • 删除指令:yum remove 文件

2. Linux编辑器-vim的使用(重点)

2.1 什么是vim?

在说vim之前我们首先需要知道什么是vi:

1. vi概述: vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的notepad(记事本)编辑器。

2. vim编辑器: Vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。

3. vim编辑器的安装:

在Linux环境下,通常已经默认安装好了vi或vim文本编辑器,我们只需要通过vim命令就可以使用这个编辑器了:

[root@VM-8-3-centos cfyfile]# touch test1.c
[root@VM-8-3-centos cfyfile]# vim test1.c

创建一个文件,直接通过vim打开:(注:此时先不要打开,不然无法关闭,下面将演示如何退出编辑)

image-20221022151633241

由于我们未对其进行配置,因此打开时是这样,虽然暂时不能对其操作,但可以说明是默认安装好的。

有些精简版的Linux操作系统,默认并没有安装vim编辑器(可能自带的是vi编辑器)。当我们在终端中输入vim命令时,系统会提示"command not found"。

解决办法:有网的前提下,可以使用yum工具对vim编辑器进行安装

#安装vim且询问是否时自动选择yes
yum install vim -y

2.2 vim的三种模式

vim的模式不止三种(一共有12种模式:six BASIC modes和six ADDITIONAL modes.),目前掌握这三种足矣:

  1. 命令模式(正常/普通模式)(Normal mode)
  2. 插入模式(Insert mode)
  3. 末行模式(last line mode)

2.2.1 命令模式:

当我们执行vim编辑器进入文件编辑时,默认的模式就是命令模式,在此模式下,我们不能进行输入操作,由于Linux环境下不支持鼠标的移动,只能通过指定的按键对光标进行移动。除了上下左右四个按键移动光标之外,还有其他移动光标的方式。

  • 光标定位:
  • shift + 4 (也就是$) :直接将光标移动到行的最右面
  • shift + 6(也就是^):直接将光标移动到行的最右面
  • shiift + g(也就是G):直接将光标移动到底部
  • gg(快速按两下g):直接将光标移动到顶部
  • n+shift+g(也就是行号+G):跳转光标到指定行,n代表的是行号(先按数字不放开,在按住shift+g)

光标移动: 我们知道通过上下左右键可以让其对应的移动,但这里还有一种方式让其移动,这种方式在以后的学习中将会用到,因此在这里交代是必要的。

image-20221022154218338

这是年代较为久远的键盘,通过这个我们可以就看出通过这四个键就可以做出相应的移动。

h:向左

j: 向下

k:向上

L:向右

  • 除了光标的移动,此模式下还可以进行文本复制相关的操作:

光标所在行:

yy:复制

p:粘贴 (np:对复制的整行内容进行n行的粘贴)

dd:删除光标所在行(ndd:对光标下面的n行整体删除,ndd+p剪切操作)

  • 文本编辑操作:

文本行的大小写切换:shift + ~ (切换之后光标会自动走向下一个字符)

shift + r(也就是R):批量化替换

r:替换光标所在的一个字符(支持nr的)

行内删除:x 和 X:向前和向后删除(同样支持nx和nX,支持p)

cw:更改光标所在处的字到字尾处。例如:c3w表示更改三个字(同时会切换到插入模式)

  • 撤销操作:

u : 撤销到上一步

ctrl + r:撤销所撤销的行为(即取消u操作)

命令模式的意义: 提高编辑效率。

2.2.2 插入模式:

对于插入模式,实际上就是正常的文本编辑操作,可以正常的在文件中输入信息。

想要切换到插入模式,我们只需要在命令模式的基础上按:i(a、o等都可以)就可以从命令模式切换到插入模式了。

  • 命令模式:image-20221022161610833

  • 插入模式:image-20221022161644781

想从插入模式退回命令模式,按esc键即可。

2.2.3 底行模式:

上述说过,当我们打开vim时,默认的是命令模式,因此其他的模式都必须经过命令模式才能进行切换,对于底行模式来说,在命令模式下输入shift + ;(即:)就可以切换到底行模式了。

image-20221022162652082

在底行模式中,有以下几个功能:

  • 显示行号的切换

显示行号:set nuimage-20221022162955092

取消行号:set nonuimage-20221022163133695

  • 写入与退出

在这里,就介绍了如何退出和保存文本编辑

保存文件内容:w

离开vim:q (按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。)

保存并离开vim:wq (w、wq同样支持强制操作)

  • 分屏操作

通过vs copy.c就可以新建copy.c并分屏操作两个文本文件了(不过光标只有一个,光标在哪个文件,就对那个文件进行操作)

这里可以通过命令:ctrl +ww就可以实现光标的跨屏操作。

image-20221022165533698

即可以通过上面的指令将test.c的内容复制到copy.c中。

  • 在vim的底行模式中执行shell指令

我们不用退出vim就可以执行命令行,只需要在正常命令的前面加上强制执行即可。

  • 在底行模式执行替换命令(演示将printf替换成cout)

格式:%s/需要替换的/替换后的/g

替换前:image-20221022171751587

替换后:image-20221022171823960

2.2.4 三种模式的总结:

image-20221022173502996

2.3 vim的配置

上述过程中的vim与记事本差别不大,并没有像vs一样的缩进等功能,因此我们就需要配置vim,一般需要创建.vimrc文件,并在.vimrc文件中插入一系列的命令,这一系列的命令就相当于vim的配置文件。对于这样配置,事实上没多少技术含量,只是非常麻烦,会需要很长时间(因为需要配置的命令多)。对于vim的配置问题,用户之间并不会彼此影响,即在同一台机器下,每一个用户的家目录的.vimrc都是独立的,即便是root也不会影响普通用户。

所谓的vim配置,就是修改自己的.vimrc(没有.vimrc就自己在家目录中touch一个)

因此在这里我们只需要在家目录中执行此命令便可以进行一键配置:

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

配置成功之后,我们再次利用vim进入文件:发现通过这样的配置就变成了这样:

image-20221022174339617

对于此配置,默认缩进是两个空格,如果想修改里面配置的参数变成4个空格,我们就可以返回到家目录,打开.vimrc并对相应的位置进行修改:(下面就是通过上面命令自动配置的.vimrc中的内容,400行以上)命令:vim .vimrcimage-20221022174639171

接下来通过/2就可以找到配置默认对齐格式的位置:(如下)直接输入/2image-20221022175006411

我们把53/54/55行的2都变成4就可以将缩进的格式从2变成4了:(切换成插入模式再改)

image-20221022175254125

这样保存并退出,就完成了vim的配置了。

3. sudo权限的配置

在之前的文章中,我们都因为没有sudo权限从而必须通过登陆root才能进行root的相关操作,这里将讲解关于提权的配置方法使普通用户通过sudo就可以拥有root的权限。

在配置之前,我们通过sudo命令会出现这样的错误:image-20221022180116219

这是因为cfy用户没有在root的白名单中,因此配置sudo实际上就是将cfy添加到root的白名单中。那么下面进行配置:

3.1 sudo配置的步骤

步骤1: 切换成root用户

因为需要打开root的白名单并将cfy添加到里面,因此我们需要登陆root账号。

步骤2: 查看是否有/etc/sudoers(一定有,这里只是看一下,实际步骤可省略)

步骤3: 通过vim打开已经存在的sudoers(一定有sudoers)并找到相应位置

vim /etc/sudoers

image-20221022180817832

在此位置我们需要添加cfy用户到这里,此时发现只有root和yaozheng两个用户。(root是默认存在的,yaozheng也是和我们描述的一样的步骤添加的)

步骤4: 添加cfy到此位置

image-20221022181136913

通过上面我们学习的vim的三种模式,我们首先在命令模式中yy一下root整行,再p到root下面,然后切换成插入模式将复制的root改成cfy,最后在底行模式下w! 回车,q!回车。(强制修改)就配置完成了!

3.2 以普通用户的身份验证sudo

在3.1标题的前面。我们执行sudo并且失败了,经过配置之后,我们来验证一下:

image-20221022181800849

我们发现,已经可以通过sudo的命令对cfy进行提权操作了,这说明我们配置已经完成。

4. 总结

对于此篇文章,算是对Linux系统工具的第一篇讲解,对于vim来说,虽然我们已经有了VS2019等编译器,但以后也避免不了会使用vim编辑器,因此我们详细讲解了vim的有关知识和相关配置;对于sudo来说,我们也将我们的普通用户变成·了能够提权的用户,因此这篇文章之后,我们就抛弃root用户本身,只使用此普通用户。最后,希望这篇文章能够帮助到你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++内存管理

1.C内存分布 学习C内存分布之前,先小试牛刀一下。 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd&quo…

webpack--》webpack底层深入讲解,从初识到精通,真正实现从0到1的过程

目录 webpack webpack的基本使用 安装 配置 修改自定义打包的入口与出口 优化js或图片的存放路径 配置webpack中符号的使用 webpack中相关插件安装 webpack-dev-server html-webpack-plugin clean-webpack-plugin webpack中的loader 打包处理css文件 打包处理les…

TPM分析笔记(十二)TPM PCR操作

目录一、PCR初始化(Initializing PCR)二、PCR的扩展(Extend of a PCR)2.1 其他PCR命令三、使用PCR Banks进行扩展(Using Extend with PCR Banks)四、事件记录(Recording Events)五、…

Java递归实现树形结构的两种方式

目录0、引言1、数据准备2、类型转化3、递归实现方法3.1、Java7及以下纯Java递归实现3.2、Java8及以上借助lamda表达式实现0、引言 在开发的过程中,很多业务场景需要一个树形结构的结果集进行前端展示,也可以理解为是一个无限父子结构,常见的…

【老师见打系列】:我只是写了一个自动回复讨论的脚本~

文章目录🌟好久不见⛳️实现过程🌴老操作了兄弟们~🐢一步拿捏讨论💖美图结束语专栏Python零基础入门篇💥Python网络蜘蛛💥Python数据分析Django基础入门宝典💥小玩意儿💥Web前端学习…

2022海德堡桂冠论坛(HLF)见闻录

今年9月下旬,我前往德国参加了第九届海德堡桂冠论坛。因疫情原因停摆两年后,海德堡桂冠论坛再次以线下形式举办,会场热闹非凡,作为计算机与数学界的社交盛宴当之无愧。 海德堡桂冠论坛(Heidelberg Laureate Forum, HLF…

IGV-GSAman |「功能基因组时代」的高效率科研工具

写在前面 今天周末,转眼10月份只剩一周。万万没想到,一个月下去,我还是花了不少时间在完善「GSAman」。至于为什么本来「两个小时」就干完的事情,可以干成「22天」?到底还是我对前面的版本,不太满意。当然…

Attack Lab

Attack Lab 从CMU官网下载完所需实验包后,内有官方文档以及.tar压缩包,使用tar -xvf targetk.tar解压后,得到如下文件 The fifiles in targetk include: README.txt: A fifile describing the contents of the directory ctarget: An execut…

web自动化测试框架

本文介绍web自动化测试框架 ●Base:用来对Selenium API进行二次封装。 对Selenium API进行二次封装的目的是简化一些复杂的操作,但是千万不要为了封装而封装。 封装好后,其他页面类可以集成basepage,调用这些方法。 from sele…

【iOS】—— 仿写知乎日报第一周总结

目录知乎日报第一周完成情况遇到的问题:1.线程问题:2.SDWebImage加载图片3.实现无限刷新界面4.点击主界面cell进入后的界面知乎日报第一周完成情况 在这周开始了仿写知乎日报的任务,在第一周里,我完成了主界面,以及滚…

新人入手mac折腾过程中遇到的解决方案

本文将长期更新,以记录个人的使用。 终端美化 …还没有美化完,不过推荐看这篇文章Mac终端美化指南 homebrew homebrew是Mac OS X上的强大的包管理工具,可以高效管理各种软件包,官方说法是:The missing package mana…

ArcGIS:如何新建图层组并添加数据、切换数据视图和布局视图、修改符号系统?

目录 01 如何新建图层组? 02 如何在图层组中添加数据 03 如何切换数据视图和布局视图 03 如何修改符号系统? 3.1 如何快捷的修改一下符号样式? 3.2 如何修改符号系统的色带 3.2.1 色带视图的取消 3.3 修改符号系统中的标注显示 3.4 如…

大气湍流退化图像复原技术研究及DSP实现

目录 第一章 绪论 1 1.1 研究背景 1 1.2 国内外研究现状 1 1.3 本文的研究内容 5 1.4 本文的组织结构 5 第二章 大气湍流退化图像复原技术 7 2.1 图像退化及复原数学模型概述 7 2.1.1 图像退化的数学模型 7 2.1.2 图像复原的数学模型 8 2.2 大气湍流退化图像概述 9 2.2.1 大气…

插件内存分析

rtspsrc 1. 当pipleline为rtspsrc加其他插件时,如果让其他插件卡主会发生什么事情呢?以rtspsrcfakesink为例(gst-launch-1.0.exe rtspsrc locationrtsp://xxx ! fakesink),修改fakesink的代码,让render中…

基于SSM的图书馆阅览室预约管理系统,高质量论文范例,可直接参考使用,附送源码、数据库脚本

目录 1.项目技术栈 2.适合对象 3.适合课题 4.项目功能概述 4.1 项目功能汇总 4.2 项目功能介绍 5. 高质量论文范例 6. 毕业设计撰写视频教程 6.部分运行截图 1.项目技术栈 前端必学三个基础,"HTML、CSS、JS",基本每个B/S架构项目都要…

C++【搜索二叉树】

目录 一、什么是搜索二叉树 二、搜索二叉树如何删除数据 删除的是叶子结点的情况 删除的结点下面仅有一个子节点(托孤)(要删除的结点只有一个孩子) 替换法删除 (要删除的结点有两个个孩子) 三、写一…

腾讯前辈熬夜肝了一个月整理的《Linux内核学习笔记》,啃完受益匪浅不走弯路

小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做Linux内核高级工程师的你一样,通过我的分享可以少走一些弯路,可以形成一套…

【数据结构】常见七大排序总结

目录 一、插入排序:直接插入排序【稳定排序方法】 二、插入排序:希尔排序【不稳定排序方法】 三、选择排序:直接选择排序【不稳定排序方法】 四、选择排序:堆排序【不稳定排序方法】 五、交换排序:冒泡排序【稳定…

基于单片机MC9S12XS128的两轮自平衡小车设计

目 录 1.绪论 1 1.1研究背景与意义 1 1.2两轮自平衡车的关键技术 2 1.2.1系统设计 2 1.2.2数学建模 2 1.2.3姿态检测系统 2 1.2.4控制算法 3 1.3本文主要研究目标与内容 3 1.4论文章节安排 3 2.系统原理分析 5 2.1控制系统要求分析 5 2.2平衡控制原理分析 5 2.3自平衡小车数学…

总结一下flex布局

flex布局 传统布局方案是基于盒状模型,依赖 display position float 方式来实现,灵活性较差;Flex是Flexible Box的缩写,意为”弹性布局”。Flex可以简便、完整、响应式地实现多种页面布局 CSS3 弹性盒子是一种一维的布局&…