Linux基础开发工具一:软件包管理器、vim编辑器

Hello大家好! 很高兴与大家见面! 给生活添点快乐,开始今天的编程之路。

我的博客:************<但愿.****************

我的专栏:C语言** 、题目精讲算法与数据结构C++ 、Linux**

欢迎点赞,关注

目录

一Linux中常见的安装软件的方式

1.1源代码安装

1.2rpm包安装

1.3包管理器安装

二软件包管理器

2.1软件包和软件包管理器

2.2Linux软件⽣态

2.2.1如何评估一款操作系统的好坏?操作系统被设计出来后,最重要的事情是什么?

2.3什么是yum/apt(包管理器)

2.4为什么会有⼈免费特定社区提供软件,还发布?还提供云服务器让你下载?

2.5 软件包依赖的问题

三 yum具体操作(apt一样可能指令不一样,网上搜即可)

3.1查看软件包

3.2所以yum安装软件

3.2.1要用提权级别才能下载

3.2.2安装软件

3.2.3卸载软件

3.2.4安装源

3.2.5安装软件的过程

3.2.6稳定包与扩展包

3.2.7配置文件在什么地方

3.2.8怎么更新软件源

四vim编辑器

4.1Linux系统为什么不用强大的集成开发环境(IDE)

4.2 vim编辑器

4.2.1vim编辑器的各种模式及其直接的转换

4.2.2五种模式常用的指令

4.2.2.1命令模式常用的指令

4.2.2.1.1光标移动

4.2.2.1.2复制粘贴剪切注销编辑文本

4.2.2.1.3大小写转换

4.2.2.1.4替换

4.2.2.1.5删除

4.2.2.1.6批量化注释和批量化去注释

4.2.2.2命令模式的全部指令

4.2.2.3底行模式(末⾏模式)常用的指令

4.2.2.3.1设置行号去除行号

4.2.2.3.2匹配搜索

4.2.2.3.3替换

4.2.2.3.4在不退出底行模式的情况下可以执行linux指令

4.2.2.3.5保存退出

4.2.2.5插入模式常用的指令

4.2.2.6几个细节问题

一 Linux中常见的安装软件的方式

1.1源代码安装

在Linux系统中我们想安装一下软件,有的对应的目标软件是开源的,他直接会把软件对应的源代码交给我们,然后用他给我们提供的工具在我们自己的系统中编好,编好后自己用他们提供的工具把自己编译好的二进制文件拷贝到系统指定的目录下(例如usr/bin),必要时可能会修改一些环境变量。整个工作从下载好源代码,从编译到安装整个过程全部要自己做。过程中会遇到很多问题特别复杂。

1.2rpm包安装

rpm包是Linux中所对可执行程序,例如一个对Linux特别熟悉的人,把一个项目编好,编好后可以不把源代码打包,可以把编好的可执行程序打包,就可以给别人用,这过程中打的包就是
rpm包(这是Linux下的一种安装包),那么我们对应的rpm包下载下来就会采用rpm命令解压并安装。这种方法虽然也能安装,但是用起来也不方便,因为我们至少要知道在哪里下rpm包,应该下哪个rpm包,下好后还有安装,安装后还要还要确认是不是安装它依赖的其他软件,即安装了之后不一定能用。

1.3包管理器安装

安装软件的最近实践。包管理器有很多好处:可以自动解决安装软件所需要的依赖问题等等

二 软件包管理器

2.1软件包和软件包管理器

• 在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进⾏编译, 得到可执⾏程序。
• 但是这样太⿇烦了, 于是有些⼈把⼀些常⽤的软件提前编译好, 做成软件包(可以理解成windows上
的安装程序)放在⼀个服务器上, 通过包管理器可以很⽅便的获取到这个编译好的软件包, 直接进⾏安装.。
• 软件包和软件包管理器, 就好⽐ "App" 和 "应⽤商店" 这样的关系.。
• yum(Yellow dog Updater, Modified)是Linux下⾮常常⽤的⼀种包管理器. 主要应⽤在Fedora,
RedHat, Centos等发⾏版上.。
• Ubuntu:主要使⽤apt(Advanced Package Tool)作为其包管理器。apt同样提供了⾃动解决依
赖关系、下载和安装软件包的功能。

2.2Linux软件⽣态

2.2.1如何评估一款操作系统的好坏?操作系统被设计出来后,最重要的事情是什么?

评估方法:⽣态问题

一款操作系统的好坏不仅仅是操作系统的本身,在操作系统刚刚诞生的时候主要是以Linux内核的形式诞生,后来因为Linux系统开源的特点,所以其会在不同的场景使用例如学生、企业等等,此时就会形成各种各样的圈子。 一个操作系统被设计出来之后,接下来的问题根本就不是技术问题了,而是必须得被更多的人使用。如果一个操作系统被发明出来,而这个操作系统没人用,前期投入的人力财力全部付之东流,在长期之下这个操作系统必然会消失。

【为什么我国早期没人做操作系统】

在我国没用人做操作系统是因为我们没用完整的操作系统生态(有能力做出来,但是不敢保证有很多的使用,操作系统就没用意义),并且在客户端操作系统早已被windows雄踞了很多年,生态位被windows扎了很多年。后来我国华为做出了自己的操作系统,其是在建立先将自己的手机硬件卖
向了全球,在硬件层面占据了很多客户群体,未来只要把操作系统弄出来,立即可以帮所有人把自己的操作系统装上即他是在保证自己有客户群体有很多人使用的基础之上建立的(这是他的底气)。

2.3什么是yum/apt(包管理器)

包管理器会按照自己的需求(自己输入的指令),然后去查找,然后发起我们的下载请求。软件包服务器会把找到的软件包下载之后,给我们下载到本地,所以我们自己平时安装的所有软件并不在我们自己的云服务器上,它是从远端另一台服务器上拉取下来的软件,这就是包管理器。

2.4为什么会有⼈免费特定社区提供软件,还发布?还提供云服务器让你下载?

首先已经有的愿意免费的去编写操作系统的代码,一方面Linux社区里的那些大神为了让Linux内核让更多人使用,他们有大量曾经写Linux系统内核的工程师愿意在Linux系统里开发更多的软件的,因为它写完操作系统必须得让更多的人使用,必须吸引更多的圈子的人过来。即为了让自己的操作系统生态变得更好。而写一个软件的目的也是让更多的人使用,所以即便一开始一个软件是为一个平台使用例如为Centos使用太也可能在别的平台开源发布在Ubuntu的平台发布。所以对于一个开发者他愿意去写代码,愿意编译,愿意把自己的软件打包放在不同社区下所对应的云服务器上让不同的社区全部都在用(这也是不同平台有很多一样的指令工具等等的原因,即写的是开源的),所以操作系统借助软件,软件借助操作系统两者生态相互进行滚动,互相促使着Linux系统的内核Linux系统应用的场景不断覆盖渗透到各个领域。所以归根结底还是为了让更多的人使用 。那Centos为啥停更有很多种可能,例如这批的程序员死了等等。即这些操作系统的底层都是一个爹Linux系统内核,但是其几个儿子有的混得好有的不好。

【centos停更】
是指对应的一批程序员不开发了,这些程序员可能是做应用开发的,所以软件包就不在更新了(特有的不更新了,和其他平台开源共有的其他平台在维护),版本也不在维护了(centos相关的发行版),即供给端停更了所以一旦停更了,其配套软件一定没用其他软件丰富,甚至链接失效

2.4怎么解决国内访问的速度等方面的问题

【国内镜像源】

以下是⼀些国内Linux软件安装源的官⽅链接:

  1. 阿⾥云官⽅镜像站
    ◦ 官⽅链接: https://developer.aliyun.com/mirror/
    ◦ 阿⾥云提供了丰富的Linux发⾏版镜像,包括CentOS、Ubuntu、Debian等,⽤⼾可
    以通过该镜像站快速下载和更新软件包。

  2. 清华⼤学开源软件镜像站
    ◦ 官⽅链接: https://mirrors.tuna.tsinghua.edu.cn/
    ◦ 清华⼤学镜像站提供了多种Linux发⾏版的镜像,以及Python、Perl、Ruby等编程语
    ⾔的扩展包。该镜像站还提供了丰富的⽂档和教程,帮助⽤⼾更好地使⽤这些软件 包。

  3. 中国科学技术⼤学开源镜像站
    ◦ 官⽅链接: http://mirrors.ustc.edu.cn/
    ◦ 中科⼤镜像站提供了多种Linux发⾏版的镜像,以及常⽤的编程语⾔和开发⼯具。⽤⼾
    可以通过该镜像站⽅便地获取所需的软件包和⼯具。

  4. 北京交通⼤学⾃由与开源软件镜像站
    ◦ 官⽅链接: https://mirror.bjtu.edu.cn/
    ◦ 北交⼤镜像站提供了多种Linux发⾏版的镜像,以及相关的软件仓库和⼯具。该镜像站
    还提供了详细的⽂档和指南,帮助⽤⼾配置和使⽤这些软件源。

  5. 中国科学院软件研究所镜像站(ISCAS)
    ◦ 官⽅链接: http://mirror.iscas.ac.cn/
    ◦ ISCAS镜像站提供了多种Linux发⾏版、编程语⾔和开发⼯具的镜像。⽤⼾可以通过该
    镜像站快速获取所需的软件包和更新。

  6. 上海交通⼤学开源镜像站
    ◦ 官⽅链接: https://ftp.sjtu.edu.cn/
    ◦ 上海交⼤镜像站提供了丰富的Linux软件资源,包括多种发⾏版的镜像和软件仓库。⽤
    ⼾可以通过该镜像站⽅便地下载和安装所需的软件包。

  7. ⽹易开源镜像站
    ◦ 官⽅链接: http://mirrors.163.com/
    ◦ ⽹易镜像站提供了多种Linux发⾏版的镜像,以及相关的软件仓库和⼯具。该镜像站还
    提供了便捷的搜索功能,帮助⽤⼾快速找到所需的软件包。
    此外,还有⼀些其他的国内镜像源,如搜狐开源镜像站等,但可能由于时间变化或政策调
    整,部分镜像站的链接或状态可能有所变动。因此,建议⽤⼾在使⽤前访问官⽅⽹站或咨询
    相关社区以获取最新的信息和帮助。

2.5 软件包依赖的问题

所以我们安装一个软件,我们不仅要安装软件还要安装软件依赖的软件。不安装运行不了,例如我们自己写个C/C++代码会依赖于C/C++相关的库所以这个过程要我们自己解决很麻烦,所以yum/apt这些软件包管理器就解决这个问题-会自动扫描你下载的软件识别其依赖的软件(库等等),帮你下载对应的依赖的软件(库等等)。

怎么自动知道文件的依赖软件:Idd指令用来查看一个软件依赖的软件库等等(Idd也是一个软件),它都知道依赖哪些,所以yum/apt一定知道的。

所以这也是用源代码安装的难处之一,只要一个错了就完了。

为啥windows简单直接双击一下对应的可执行文件即可,因为windows把所有的软件包打包了,包括依赖关系也放在一个目录下了,所有我们会发现我们在windows系统中安装一个软件会在指定目录下有很多对应的库配置文件等等。

三 yum具体操作(apt一样可能指令不一样,网上搜即可)

3.1查看软件包

【查看指令】
yum list 命令可以罗列出当前⼀共有哪些软件包. 由于包的数⽬可能⾮常之多, 这⾥我们需要使⽤
grep 命令只筛选出我们关注的包。

cpp 复制代码
# Centos
$ yum list | grep lrzsz
lrzsz.x86_64 0.12.20-36.el7 @base
# Ubuntu
$ apt search lrzsz
Sorting... Done
Full Text Search... Done
cutecom/focal 0.30.3-1build1 amd64
Graphical serial terminal, like minicom

lrzsz/focal,now 0.12.21-10 amd64 [installed]
Tools for zmodem/xmodem/ymodem file transfer

$ apt show lrzsz
Package: lrzsz
Version: 0.12.21-10
Priority: optional
Section: universe/comm
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Martin A. Godisch <godisch@debian.org>
...

【注意事项】

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

3.2所以yum安装软件

3.2.1要用提权级别才能下载

在Linux系统中想安装软件必须是特权级别,因为安装软件本来就是要把软件下载下来在把对应的软件依赖关系拷贝到系统的目录下(普通用户只要自己的家目录等等,没用系统的目录)即在Linux系统中安装软件,一般一个人安装好全部人都能用,因为要用特权级别,即使是普通用户也是通过sudo指令进行下载,本质都是超级用户安装的,普通用户是以其他的角色去访问,所以可以通过权限来控制(即把对应的软件的权限去掉例如把一个指令的文件对应的权限去掉我们普通用户可能就执行不了这个指令了)。

3.2.2安装软件

【安装命令】

cpp 复制代码
# Centos
$ sudo yum install -y lrzsz
# Ubuntu
$ sudo apt install -y lrzsz

【注意事项】
•yum/apt 会⾃动找到都有哪些软件包需要下载, 这时候敲 "y" 确认安装.。
•出现 "complete" 字样或者中间未出现报错, 说明安装完成。
•安装软件时由于需要向系统⽬录中写⼊内容, ⼀般需要 sudo 或者切到 root 账⼾下才能完成(所以要用提权)。
•yum/apt安装软件只能⼀个装完了再装另⼀个. 正在yum/apt安装⼀个软件的过程中, 如果再尝试⽤
yum/apt安装另外⼀个软件, yum/apt会报错。

3.2.3卸载软件

【卸载指令】

cpp 复制代码
# Centos(yum)
sudo yum remove [-y] lrzsz

# Ubuntu(apt)
sudo apt remove [-y] lrzsz

3.2.4安装源

【Cetnos 安装源路径(ynm)】

cpp 复制代码
$ ll /etc/yum.repos.d/
total 16
-rw-r--r-- 1 root root 676 Oct 8 20:47 CentOS-Base.repo # 标准源
-rw-r--r-- 1 root root 230 Aug 27 10:31 epel.repo # 扩展源

【Ubuntu 安装源路径(apt)】

cpp 复制代码
$ cat /etc/apt/sources.list # 标准源
$ ll /etc/apt/sources.list.d/ # 扩展源

3.2.5安装软件的过程

【centos】
搜索软件:
sudoyumlist(软件列出来)|grep软件名(罗列出我们指定软件的软件包,方便后续下载)
安装软件:
sudo yum install-y(回答是否确认要安装)epel-release(安装的软件名)
卸载软件:
sudo yum remove 软件名也可以 sudo yum remove -y文件名

【Ubuntu】
搜索软件:
sudo apt search文件名或者sudo apt list |grep 软件名(也正常yum的,但是又自己特有的指令)
安装软件:
sudo apt install-y软件名
卸载软件:
sudo apt remove-y软件名

3.2.6稳定包与扩展包

3.2.7配置文件在什么地方

【yum】

一般在 /etc/yum.repos.d/(repos:仓库d:目录)

【apt】

一般在/etc/apt目录下的/etc/apt/sources.list文件

3.2.8怎么更新软件源

【更新软件源的产生情况】

用的是国外的镜像源想切换成国内的镜像源,或者用的国内的镜像源不能用了,或者就是想更新软件源。

【更新过程】

1)把当前目录下的配置文件(Centos-Base.repo)备份或者重命名--怕更换失败要换回来。
2)获得新的软件源(镜像源)-不知道怎么获取的可以AI生成指令(但不一定能用毕竟计算机更新快AI可能是之前的文章。要用sudo指令
3)下载好了之后(替换了源镜像源后):要把前面的缓存去掉sudoyumclearall(别的版本自己网上搜索指令)。
4)更新缓存:sudo yum makecache(别的版本自己网上搜索指令,这里是yum)。

【注意】
对于yum(centos)基础软件源和扩展软件源不在同一个配置文件,所以还要感新扩展软件源,而对于apt(ub)基础
软件源和扩展软件源在同一个配置文件中所以不用这个操作

四 vim编辑器

4.1Linux系统为什么不用强大的集成开发环境(IDE)

【集成开发环境】

从代码的编写、代码的编译、代码调试、代码运行,把所对应的功能集成在一起的软件叫IDE(集成开发环境),windows中因为图形界面已经生态开发的问题,所以winsows中的开发软件很多都是集成化的解决方案。
而在Linux系统中不采用这种,Linux下开发工具是独立的。
例如写代码--编辑器->vim、vi、nano
编译代码:gcc/g++
调试:gdb、cgdb
构建工具:makefile、make、cmake
git

【为什么Linux不采用集成开发环境】

因为在很多场景带图形化界面代替不了的。例如在centos机器在后端应用不带图形化界面,后端不带图形化界面就意味着很多带图形化界面的软件装不了,所以只能用指令级的黑屏工具。

4.2 vim编辑器

4.2.1vim编辑器的各种模式及其直接的转换

vim⾥⼀共有12种模式:six BASIC modes和six ADDITIONAL modes,这里指将三种常见的模式:命令模式、插⼊模式、末⾏模式和两种扩展模式:视图模式、替换模式。
【几种模式之间的转换】

【vim的核心模式命令模式】

【总结】

5种模式的切换方法:

1)vim的核心模式是命令模式,打开vim默认处于的模式也是命令模式

2)其他模式想回到命令模式按Esc即可

3)命令模式转成插入模式按aio:

其中按i切换成插入模式后光标的位置不会变

而a切换成插入模式后后光标的位置会向后移动一个字符

而o切换成插入模式后后光标的位置会向下移动一个行

4)命令模式切换成底行模式:

按shift+;=:

5)命令模式转成替换模式:
按shift+r =R

6)命令模式转成视图模式

按ctrl+v

注意不模式转换成除命令模式为的其他模式都不能直接转换,要先以命令模式为中间点,先切换成命令模式。

三个常见模式的作用:

1)正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或⾏的删除。
2)插⼊模式(Insert mode)
只有在Insert mode下,才可以做⽂字输⼊。
3)末⾏模式(last line mode)【底行模式】
⽂件保存或退出,也可以进⾏⽂件替换,找字符串,列出⾏号等操作。

4.2.2五种模式常用的指令

4.2.2.1命令模式常用的指令
4.2.2.1.1光标移动

【整体移动】

光标的上下移动(文本的最开始和最末尾)

shift+g=G:进入文本末端
gg:进入到文本开始
n+shift+g:定位到任意一行(一个很多的文本时想定位到任意一行可以使用,即为了快速定位)。

光标的左右移动(文本一行的最开始和最末尾)----常称为锚点
shift+4=$(定位到当前行的行尾:光标移动到行尾)
shift+6=^(定位到当前行的开始:光标移动到行首)

【局部移动-移动单位字符】

1)箭头
即软件的前后项兼容
2)hjkl(为啥时是这四个为了兼容以前的键盘,以前的键盘没用箭头通过hjkl表示)

h:左

j:下
k:上
l:右

记忆方式:hjkl四个四按顺序从左往右的h在最左边、l是四个种最右边的、j:jump(下)、k(king皇上高高在上)。

【局部移动-移动单位单词】

【创建原因】

因为上面的局部移动很慢。上面的局部移动以一个字符为单位,那如果想移动到一行的中间,上面这种方法就比较慢。

1)w:向右走以"单词"为单位----这里的单词可以理解为遇到单词就按单词处理,如果遇到不是单词的按字符处理(例如特殊符号)

2)b:向左走以"单词"为单位
一个一个单词移动还是太慢了可以n+w/n+b指定向左向右移动几个单词,但当前行没有这么多给单词会跳入到下一行/上一行继续移动

4.2.2.1.2复制粘贴剪切注销编辑文本

【复制粘贴剪切】

1)YY: 复制
n+yy:可以复制多行,指定的行数

2)p:粘贴(粘贴到当前文本行下一行)注意这里的当前文本行是光标所处的行数,所以可以指定粘贴的位置,通过光标位置来实现,例如在文本的第一行复制,然后把光标移动到最后一行,就会在最后一行的后面粘贴
n+p:指定复制的行数

3)dd:删除当前行(光标所在的行)。

n+dd:指定删除的行数

4)剪切:dd+p(dd选中你要剪切的行,在将光标移动到你要剪切的位置p就可以实现剪切),此时p也可以加数字

【注销】

1)u撤销操作

2)ctrl+r:对u的撤销进行撤销

这个是又一次的编辑操作,所以u也可以撤销ctrl+r的,所以这两个指令可以互相撤销,所以在vim中你不用怕误操作随时可以后悔

4.2.2.1.3大小写转换

shift+`=~;向一次连续化几个,按住shift不松,在依次按'按几下'就换几个

4.2.2.1.4替换

1)r:替换光标所从位置的一个字符
n+r:指定要替换的个数进行批量化的替换

2)shift+r=R:让vim进入替换模式,批量化的内容替换,直接无视之前的内容进行替换可以进行自由替换

4.2.2.1.5删除

1)dd:以行为单位,删除光标所在的行。
n+dd:指定删除行数

2)x:以字符为单位,删除光标所在的字符,连续按x会向右删除。
n+x:指定删除字符的个数(注意是光标所在的字符开始向右的n个字符)

3)shift+x=X:当前位置向左删除
n+shift+x:指定删除字符的个数(注意是光标所在的字符开始向左的n个字符)

总结:想宏观的删除用dd想局部的用x/shift+x

4.2.2.1.6批量化注释和批量化去注释

【批量化注释】

步骤:

1)ctrl+v进入vim的视图模式
2)hjkl:选择区域(hjkl几个方向键分别表示向对应的方向拉)
3)shift+i=(会变成vim的插入模式,少数不用切换到命令模式就可以切换的)
4)输入//
5)按esc

【批量化去注释】

步骤

1)ctrl +v
2)hjkl:选择区域
3)按d
注意如果要选择很多行hjk前面也可以+n指定个数例如想指定1000行可以1000+j选择区域,即利用前面的光标定位。

【作用】

作用既然可以批量化注释、批量化去注释,那也可以批量化插入删除其他内容,例如批量化换文本,和批量化注释的前三步一样,然后可以和前面的文本操作结合,例如想将指定的区域替换成2可以在第四步变成r+2

4.2.2.2命令模式的全部指令

【移动光标 】
• vim可以直接⽤键盘上的光标来上下左右移动,但正规的vim是⽤⼩写英⽂字⺟「h」、「j」、 「k」、「l」,分别控制光标左、下、上、右移⼀格
•按「G」:移动到⽂章的最后
•按「 $ 」:移动到光标所在⾏的"⾏尾"
•按「^」:移动到光标所在⾏的"⾏⾸"
•按「w」:光标跳到下个字的开头
•按「e」:光标跳到下个字的字尾
•按「b」:光标回到上个字的开头
•按「#l」:光标移到该⾏的第#个位置,如:5l,56l•
•按[gg]:进⼊到⽂本开始
•按[shift+g]:进⼊⽂本末端
•按「ctrl」+「b」:屏幕往"后"移动⼀⻚
•按「ctrl」+「f」:屏幕往"前"移动⼀⻚
•按「ctrl」+「u」:屏幕往"后"移动半⻚
•按「ctrl」+「d」:屏幕往"前"移动半⻚
【删除⽂字】
•「x」:每按⼀次,删除光标所在位置的⼀个字符
•「#x」:例如,「6x」表⽰删除光标所在位置的"后⾯(包含⾃⼰在内)"6个字符
•「X」:⼤写的X,每按⼀次,删除光标所在位置的"前⾯"⼀个字符
•「#X」:例如,「20X」表⽰删除光标所在位置的"前⾯"20个字符
•「dd」:删除光标所在⾏
•「#dd」:从光标所在⾏开始删除#⾏
【复制 】
•「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
•「#yw」:复制#个字到缓冲区
•「yy」:复制光标所在⾏到缓冲区。
•「#yy」:例如,「6yy」表⽰拷⻉从光标所在的该⾏"往下数"6⾏⽂字。
•「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须
与"p"配合才能完成复制与粘贴功能。
【替换】
•「r」:替换光标所在处的字符。
•「R」:替换光标所到之处的字符,直到按下「ESC」键为⽌。
【撤销上⼀次操作 】
•「u」:如果您误执⾏⼀个命令,可以⻢上按下「u」,回到上⼀个操作。按多次"u"可以执⾏多次回复。
•「ctrl + r」: 撤销的恢复
【更改】
•「cw」:更改光标所在处的字到字尾处
•「c#w」:例如,「c3w」表⽰更改3个字
【跳⾄指定的⾏】
•「ctrl」+「g」列出光标所在⾏的⾏号。
•「#G」:例如,「15G」,表⽰移动光标⾄⽂章的第15⾏ ⾸。

4.2.2.3底行模式(末⾏模式)常用的指令
4.2.2.3.1设置行号去除行号

1)设置行号:set nu

2)去除行号set nonu

4.2.2.3.2匹配搜索

/你要搜索的内容(整个文本中包含你要搜索的内容高亮出来
n切换到含有你搜索内容文本的下一行。

4.2.2.3.3替换

%s/文本中要替换的内容/你想用什么替换文本中的内容/g或者替换前者

4.2.2.3.4在不退出底行模式的情况下可以执行linux指令

底行模式可以在不退出vim的情况下执行shell命令通过!+shell指令,输入后会显示对应指令的效果,在按回车键就会回到vim中。

4.2.2.3.5保存退出

1)w(保存)

2)q(退出)

3)wq(保存并退出)

4)如果权限不够可以wq!强制保存退出,也可以w!、q!强制进行,强制w就是写(因为即使你在插入模式写了内容没保存,退出vim该文件也没有你输入的内容,所以w就是写。(起始我们编辑的时候是把对应数据拿到内存中,写的时候在在把内存的数据写回到磁盘,其是一个内存级的

4.2.2.4底行模式(末⾏模式)的指令合集

【列出⾏号】
•「set nu」: 输⼊「set nu」后,会在⽂件中的每⼀⾏前⾯列出⾏号。
【跳到⽂件中的某⼀⾏]
•「#」:「#」号表⽰⼀个数字,在冒号后输⼊⼀个数字,再按回⻋键就会跳到该⾏了,如输⼊数字15,再回⻋,就会跳到⽂章的第15⾏。
【查找字符 】
•「/关键字」: 先按「/」键,再输⼊您想寻找的字符,如果第⼀次找的关键字不是您想要的,可以 ⼀直按「n」会往后寻找到您要的关键字为⽌。
•「?关键字」:先按「?」键,再输⼊您想寻找的字符,如果第⼀次找的关键字不是您想要的,可 以⼀直按「n」会往前寻找到您要的关键字为⽌。
•问题:∕ 和 ?查找有和区别?操作实验⼀下
【保存⽂件】
•「w」: 在冒号输⼊字⺟「w」就可以将⽂件保存起来
【离开vim 】
•「q」:按「q」就是退出,如果⽆法离开vim,可以在「q」后跟⼀个「!」强制离开vim。

• 「wq」:⼀般建议离开时,搭配「w」⼀起使⽤,这样在退出的时候还可以保存⽂件。

4.2.2.5插入模式常用的指令

插入模式就不说了就是编写代码的模式,这里只讲在这种模式下的退出指令:shift+zz=zz退出vim(不用在底行模式退出)

4.2.2.6几个细节问题

【问题1 vim打开一个没创建的文件】

vim一个不存在的文件,会打开,并且会生成对应的文件,但是其是一个内存级的你不保存,在磁盘上是没有对应的文件的。只有你保存才会在磁盘上生成。

【问题2文件权限是带来的问题】

普通用户文件权限问题对应进入vim:
1)如果文件没有r权限,用vim打开文件,此时什么都看不到

2)没有w权限(在底行模式下会影响):此时不让写(写了之后不让保存等于不让写),但是可以w!强行写入(因为这个文件一般是你自己创建的如果不是不行)w(保存)、q(退出)、wq(保存并退出),如果权限不够可以wq!强制保存退出,也可以w!、q!强制进行,强制w就是写(因为即使你在插入模式写了内容没保存,退出vim该文件也没有你输入的内容,所以w就是写。(起始我们编辑的时候是把对应数据拿到内存中,写的时候在在把内存的数据写回到磁盘,其是一个内存级的)

【问题三分屏打开多个文件】

vim同时打开多个文件,并且分屏:vs分屏操作ctrl+ww选中哪一个屏
先vim打开一个文件,在进入到底行模式,在输入vs+你要打开的另一个文件的文件名就可以同时打开多个文件。怎么跳转分屏:(通过光标),ctrl(不动)+w就可以到左右右切换屏了,左右到最右变的屏在w才会到最左边的屏,注意不管几个分屏,但是只要一个底行(对应所在分屏的文件的底行)

【问题4关闭vim光标的位置的作用】

当vim退出时光标在第n行,那么再次打开光标还是在原来位置:
有什么用其配套的东西很重要,在Linux中我们将代码编译后如果代码从错会报错,会显示错误行数,如果我们退出文件时光标子首行。此时出现报错的行数是n行我们可以直接vim文件名+n,此时打开文件光标会移动到第n行直接定位到错误的行数。

【直接退出vim(例如不小心关闭了终端】

vim的没退,直接把linux机器关了(有人不小心把终端关了),当再次使用vim打开会出现下面画面,因为你没有直接退出vim系统会形成对应的临时文件,一般存放在当前目录,使用ls-la就可以看到,如果我们没有把这个临时文件生成,每次vim进入该文件都会出现这个画面,只要把对应的临时文件删除后才能恢复到正常的vim模式。

篇文章就到此结束,欢迎大家订阅我的专栏,欢迎大家指正,希望有所能帮到读者更好了解Linux相关知识,Linux基础指令就到此为止,后面我将继续更新Linux权限相关知识。觉得有帮助的还请三联支持一下~后续会不断更新Linux相关知识,我们下期再见。

相关推荐
玖玥拾1 小时前
C/C++ 基础笔记(十)
c语言·c++
wx_jiuyun6781 小时前
渔夫Telegram群机器人系统详解
linux·服务器·机器人
开开心心就好1 小时前
新手友好的音视频格式转换工具
linux·服务器·网络·智能手机·pdf·beautifulsoup·音视频
哎呦,帅小伙哦1 小时前
Nanomsg 源码深度剖析:从 protocol.h 内核抽象到 Pair 一对一通信全实现
linux·nanomsg
xlq223221 小时前
65.tcp—done
服务器·网络协议·tcp/ip
Frank学习路上1 小时前
【C++】面试:指针与引用
c++·面试
hanlin031 小时前
基于OpenHarmony 5.0的CAN驱动移植步骤
linux·c语言·华为·can·openharmony·t527
刘国华-平价IT运维课堂1 小时前
Ubuntu 26.04 LTS 发布,研发与运维需要关注什么?
linux·运维·服务器·人工智能·ubuntu
YIN_尹1 小时前
【Linux系统编程】基础IO第一讲——系统文件IO
android·java·linux·c++