LINUX入门篇【4】开发篇--开发工具vim的使用

前言:

从这一篇开始,我们将正式进入使用LINUX进行写程序和开发的阶段,可以说,由此开始,我们才开始真正去使用LINUX。

介绍工具:

1.LINUX软件包管理器yum:

1.yum的介绍:

在LINUX中,我们也需要用工具进行操作,既然涉及到操作系统,自然离不开对软件的操作,在LINUX中我们也要进行工具/指令/程序/安装/检查卸载等,需要软件去进行这些操作。
常见的下载软件的的方式有:
1.源代码安装,交叉编译(有时需要选择安装路径)
2.rpm包直接安装,安装的本质,就是把可执行程序拷贝到指定的路径下即可,这是对安装最基本的理解。
3.yum/apt-get一键式安装,在这里,我们最推荐最后一种通过yum安装,这也是我们今后下载的主要方式

yum:yum是我们LINUX预装的一种指令,搜索,下载,安装对应的软件。

2.yum的相关操作:

1.yum list:查看所有的软件列表
2.yum list |grep 对应的软件名:从软件列表中过滤出我们想要的软件名字
3.yum install (-y) 对应的软件名(只有root账号可以自由下载软件,或者用普通账号的sudo指令来进行)
4.yum remove 对应软件:卸载软件(同理,依旧是root账号或者sudo来执行才可以,其他人没有权限)

我们的软件是怎样显示的呢?
如下:
在这里插入图片描述
在这里适用的框架就是我们前面讲过的uname-a那个查看的系统框架。

3.yun生态:

经过上面的讲解,我们已经可以使用yum来查找下载和删除一些软件了,在这个过程中,你是否发现yum很像我们的手机上软件商店或者电脑上的电脑管家,没错,其实从本质上讲,他们就是同样原理的东西,yum就是LINUX上的软件商店。它的生态原理是这样的:
在这里插入图片描述
由于软件被开发测试完毕后都是直接上传到服务器端,数据会被一直保存到服务器端,故我们才能做到我们不论何时不论何地只要有网就可以下载软件。
对于一款操纵系统而言:
生态完整,使用者的社区非常的活跃,可维护性好,bug被及时修复,文档全面,并且被很多开发公司所使用,这边是一款好的操作系统,比如我们的windows我们使用vs进行开发,而LINUX中我们使用vim开发,LINUX和windows都是极为优秀的操作系统。
补充问题:
遇到软件安装不了的时候,我们可以使用yum install -y epel -release来直接安装扩展样源,同样使用root或者sudo执行。

yum中含有除了base以外的多个安装的源,这是由于厂商是不同的,比如上面的epel,有些软件可能在官方的yum源里是没有的,有时从官方样源找不到时,我们可以从扩展软件源里寻找epel,repo.
查看yum的安装源:
ls /etc/yum.repos.d/

倘若我们呢没有下载epel源,只需要下载:
yum install -y epel -release即可

4.yum源更新:

即是将Centos-Base.repo这种用包含国内下载链接的仓库文件,替换同类型的文件即可,

2.vim gcc/g++:

1.介绍vim/vi:

不管是vim还是vi,他们的本质就是一款文本编译器指令软件,进行代码/文本的编写
既然是进行代码的编写,那么vim和vs这样的软件有什么区别呢?
vim首先只能进行代码的编写,修改。但vs除了编写代码外,还可以进行代码的调试,代码的汇编查看等一系列功能,我们把这种功能全面的开发环境称之为IDE集成开发环境。这一点是vim没法做到的,但是我们可以一点一点配置vim使其增加不同的功能。
那vim编译器这样局限,为什么要学习呢?直接在vs上编译不就好了?
vim编译器虽然没有可视化的图形等,在开发层面上的效率不如vs,但vim的操作学会后对于其他编译软件学习基本是零成本的,因为其他编译软件基本就是vim的功能的部分包含。

2.vim的使用:

1.以vim形式打开文件:

我们前面学过一种打开文件的方式nano,今天我们以vim形式打开文件,vim和nano的不同在于,vim是一种多模式可互相切换的编译器,而nano单纯是按照文本文件来处理一个文件。

2.退出文件:

将文件切换到底行模式,然后输入wq(保存加退出)即可保存当前的文件内容同时退出文件,倘若wq输入后警告,则强制使用**wq!**强制退出即可,当然w保存退出,q退出加上叹号这些同理。
既然谈到了模式,那么下面就让我们来谈一谈vim的各种模式:

3.vim的各种模式(重要!!!!):

vim的模式常见的有这样几种:
1.命令模式
2.底行模式
3.插入(编辑)模式
4.视图模式
5.替换模式
他们之间的关系可以这样体现:
在这里插入图片描述
通过这张图,我们就知道了每一个模式之间是如何进行切换的,在这里我们发现,底行模式,插入模式,视图模式和替换模式这些是没法相互之间转换的,必须先转换为命令模式才可以,所以,命令模式就是vim最核心的模式,在这里我提一下命令模式切换到插入模式的a,i.o分别为:
1.a光标后移进入insert模式
2.o光标换到下一行进入insert模式
3.i光标从头开始进入insert模式

这三种模式都可以使用,差别不大,所以我们日常直接i进入插入模式即可
接下来,让我们一个一个模式介绍他们的指令:

1.插入模式:

在这里插入图片描述
插入模式没什么特别的指令,我们只需要像之前那样写代码即可

2.底行模式:

在这里插入图片描述

1.wq指令:用来保存退出,强制执行加!即可。
2.set number/nu:设置行号
3.set nonu.nonumber:取消行号
4.在底行模式下加叹号,可以直接执行翻译等指令且不用退出
5./+搜索关键字:找到带有关键字的语句,按住n即可向下依次寻找
6.help vim-modes/help modes:查看当前的vim版本
6.vs+文件名:即可同时多个文件同时书写,注意,无论打开多少个文件,光标只有一个,任何指令作用于光标存在的那个文件上

3.命令模式:

在这里插入图片描述
在我们vim打开文件的时候,默认的就是命令模式。在这里我们带颜色是因为我安装了vim的配置包。实际上裸的LINUX应该是黑白的,命令模式最关键的地方在于,不同于鼠标,LINUX利用键盘就可以锁定代码的位置。
首先让我们记住一句话,对于任何操作系统: 光标在哪里,信息就向哪里写,故我们首先就要学会控制光标。
1.光标定位:
1.光标定位到最开始:gg
2.光标定位到最后一行:shift+g
3.光标定位到具体一行:数字n+shift+g
4.一行的结束位置:shift+4($)
5.一行的开始位置:shift+6(^)
2.光标移动:
向上:k/向上键
向下:j/向下键
向左:h/向左键
向右:l/向右键
向右以单词形式跨越:w(遇到字符按字符跨越)
向左以单词形式跨越:b(遇到字符按字符跨越)
3.对文本进行增删查改:(这也是文本编译器的核心工作)
1.yy:复制当前行
2.n+yy:复制从此行开始的n行内容
3.dd:剪切当前行
4.n+dd:剪切从当前行开始的n行内容
5.n+yw:复制单个n个字母的单词
6.p:粘贴(包括剪切的和复制的都可以粘贴)
7.n+p:粘贴几次
8.u:对上一步的命令进行撤销,但更准确的说,是返回到上一步的操作状态,同时也正好起到了撤销的作用
9.shift+~:文本的大小写相互转换(大写转小写,小写转大写)
10.r+单个字符:替换光标所在的字符
11.n+r+字符:替换几个字符变成指定字符
12.切为替换模式:从光标之后的字符会被连续输入的字符替换
13.插入:切换到insert模式即可
14.n+x:向后删除一个字符/n个字符
15.撤销u命令:ctrl+r恢复u之前的状态
16.shift+3(#):查找并跳转至含有多个光标字符的位置,并且一般配合n来使用,n同单词进行跳转
17.ctrl+ww:在多个界面之间进行跳转
18.注释:首先我们先切换到视图模式:
然后通过jkhl来选定我们的范围,注意,视图模式中移动是以面的形式展开,然后shift+i 打// ESC返回到命令模式后即可看到注释的标识符
删除注释的方法:进入视图模式,选中带有注释的位置,直接d即可

3.vim的配置:

上面的指令讲完,我们就已经具备操作vim写程序的能力了,你可以像在VS上自由自在的写程序,但vim的缩进和换行依旧糟糕,这就需要我们手动配置一下vim的一些功能。
首先,让我们在我们的普通用户的家目录下创建一个隐藏文件**.vimrc**
在vim启动的时候,会自动扫描当前用户家目录下的.vimrc,让.vimrc内部的选项生效,vim配置,其核心就是向.vimrc里面添加更多的配置选项即可。
有了这个,我们就可以让我们的vim有了各种插件和功能,让其具备和vs一样的功能。

补充知识点:
如何将普通用户添加到sudo白名单列表里,让其能以root身份执行指令呢?
首先切换到root用户,vim /etc/sudoers配置文件中,vim进入:在文件的100行左右,如下:
在这里插入图片描述
在这里,按照格式,添加上你的用户名,这个用户就被添加到白名单里面了,这样就可以执行sudo指令了!

总结:

以上便是我们LINUX的开发工具vim的使用方法,希望通过这篇文章,能够让你直接在LINUX的文件中写下你想要的代码。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Sublime Text Mac/Win中文版:代码编辑器的卓越典范

你是否曾为寻找一个功能强大且易于使用的代码编辑器而感到困扰?现在,我要向你介绍一个解决方案——Sublime Text。这款代码编辑器以其高效、灵活和直观的特点,赢得了开发人员的广泛喜爱。让我们深入了解一下Sublime Text的优点。 一、强大的…

易点易动固定资产管理系统:实现全生命周期闭环式管理和快速盘点

固定资产管理对于企业来说至关重要,它涉及到资产的采购、领用、使用、维护和报废等各个环节。然而,传统的固定资产管理方式往往繁琐、耗时,容易导致信息不准确和资源浪费。为了解决这些问题,我们引入易点易动固定资产管理系统&…

【Git企业开发】第六节.配置 Git和标签管理

文章目录 前言一、配置 Git 1.1 忽略特殊文件 1.2 给命令配置别名二、标签管理 2.1 理解标签 2.2 创建标签 2.3 操作标签 总结 前言 一、配置 Git 1.1 忽略特殊文件 在日常开发中,我们有些文件不想或者不应该提交到远端,…

第四章Web服务器(2)

第四章Web服务器(2) 1.基于https协议的静态网站 1.1.概念解释 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。 HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文&#…

AI 为先的时代,企业如何深度用云?

「又一年云栖,SOFAStack 走向云原生深处。」 SOFAStack 5.0 与蚂蚁集团代码大模型 CodeFuse 全面融合,涵盖设计、研发、测试、运维等领域,提供从领域建模到智能运维的端到端 Copilot 产品解决方案,为企业打造新一代 AI 云原生 Paa…

Python - 利用 OCR 技术提取视频台词、字幕

目录 一.引言 二.视频处理 1.视频样式 2.视频截取 ◆ 裁切降帧 ◆ 处理效果 3.视频分段 三.OCR 处理 1.视频帧处理 2.文本识别结果 3.后续工作与优化 ◆ 识别去重 ◆ 多线程提效 ◆ 片头片尾优化 四.总结 一.引言 视频经常会配套对应的台词或者字幕&#xff0c…

Modern C++ 转换构造函数和类型转换函数

在 C/C 中,不同的数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式地指明如何转换的称为强制类型转换。 不管是自动类型转换还是强制类型转换,前提必须是编译器知道如何…

温故知新:探究Android UI 绘制刷新流程

一、说明: 基于之前的了解知道ui的绘制最终会走到Android的ViewRootImpl中scheduleTraversals进行发送接收vsync信号绘制,在ViewRootImpl中还会进行主线程检测,也就是我们所谓子线程更新ui会抛出异常。 像我们常用的刷新ui,inval…

华为ipsec vpn双链路主备备份配置案例

配置就是这配置,意外是完成后不通,待以后处理! FW_A配置: dhcp enable ip-link check enable ip-link name check_b destination 2.2.2.2 interface GigabitEthernet1/0/0 mode icmp next-hop 202.38.163.2 acl number 3000 rul…

新方向!文心一言X具身智能,用LLM大模型驱动智能小车

具身智能已成为近年来研究的热点领域之一。具身智能强调将智能体与实体环境相结合,通过智能体与环境的交互,来感知和理解世界,最终实现在真实环境中的自主决策和运动控制。 如何基于文心大模型,低成本入门“具身智能”&#xff0…

振南技术干货集:C语言的一些“骚操作”及其深层理解(2)

注解目录 第二章《c语言的一些“操作”及其深层理解》 一、字符串的实质就是指针 (如何将 35 转为对应的十六进制字符串”0X23”?) 二 、转义符\ (打入字符串内部的“奸细”。) 三、字符串常量的连接 &#xff…

JAVA基础1:Java概述

1.JAVA语言 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 JAVA语言是美国Sun公司在1995年推出的计算机语言 JAVA之父:詹姆斯高斯林 2.JAVA语言跨平台原理 跨平台:JAVA程序可以在…

Yolov5 + 界面PyQt5 +.exe文件部署运行

介绍 Yolov5是一种基于深度学习的目标检测算法,PyQt5是一个Python编写的GUI框架,用于创建交互式界面。在部署和运行Yolov5模型时,结合PyQt5可以方便地创建一个用户友好的界面,并将代码打包为.exe文件以供其他人使用。 下面是一个…

学者观察 | 联邦学习与区块链、大模型等新技术的融合与挑战-北京航空航天大学童咏昕

导语 当下,数据已成为经济社会发展中不可或缺的生产要素,正在发挥越来越大的价值。但是在数据使用过程中,由于隐私、合规或者无法完全信任合作方等原因,数据的拥有者并不希望彻底和他方共享数据。为解决原始数据自主可控与数据跨…

新登录接口独立版变现宝升级版知识付费小程序-多领域素材资源知识变现营销系统

源码简介: 资源入口 点击进入 源码亲测无bug,含前后端源码,非线传,修复最新登录接口 梦想贩卖机升级版,变现宝吸取了资源变现类产品的很多优点,摒弃了那些无关紧要的东西,使本产品在运营和变现…

线上SQL超时场景分析-MySQL超时之间隙锁 | 京东物流技术团队

前言 之前遇到过一个由MySQL间隙锁引发线上sql执行超时的场景,记录一下。 背景说明 分布式事务消息表:业务上使用消息表的方式,依赖本地事务,实现了一套分布式事务方案 消息表名:mq_messages 数据量:3…

【LeetCode:2300. 咒语和药水的成功对数 | 二分】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

“三大阶段稳定性测试”筑牢长安链信任基石

前言 随着长安链应用生态的不断丰富、面对的应用场景更加多元,稳定性测试在长安链测试流程中占到越来越重要的位置。本文将介绍长安链稳定性测试的发展历程及如何通过三大阶段稳定性测试应对不断出现的复杂的商业需求,筑牢长安链信任基石。 功能测试和…

IDEA 设置 Git 在左侧展示

File->settings->Version Control->commit 勾选 Use non-model commit interface

AI:77-基于深度学习的工业缺陷检测

🚀 本文选自专栏:人工智能领域200例教程专栏 《人工智能领域200例教程专栏》从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,通过本专栏案例和项目实践,都有参考学习意义。每篇案例都包含代码实例,详细讲解供大家学习。 ✨✨✨ 每一个案例都附带有代码,在本…