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的文件中写下你想要的代码。

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

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

相关文章

【教3妹学编程-算法题】2923. 找到冠军 I

3妹:2哥2哥,你看到新闻了吗?襄阳健桥医院院长 公然“贩卖出生证明”, 真是太胆大包天了吧。 2哥 : 我也看到新闻了,7人被采取刑事强制措施。 就应该好好查查他们, 一查到底! 3妹:真的…

Oracle(18)Auditing

文章目录 一、基础知识1、审计介绍2、Auditing Types 审计类型3、Auditing Guidelines 审计准则4、Auditing Categories 审核类别5、Database Auditing 数据库审计6、Auditing User SYS 审计sys用户7、Getting Auditing Informatio 获取审计信息8、获取审计记录通知 二、基础操…

赛氪助力全国大学生数学竞赛山东赛区圆满举办

近日,全国大学生数学竞赛山东赛区比赛有序进行,赛氪已连续6年助力本项赛事蓬勃发展。在中国高等教育学会高校竞赛评估与管理体系研究专家工作组发布的《2022全国普通高校大学生竞赛分析报告》中,本赛事荣登观察目录。 全国大学生数学竞赛旨在…

基于STC12C5A60S2系列1T 8051单片机串口通信信应用

基于STC12C5A60S2系列1T 8051单片机串口通信应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机串口通信介绍STC12C5A60S2系列1T 8051单片机串口通信的结构基于STC12C5A60S2系列1T 8051单片机串口通信的特殊功能寄存器列表基于STC12C5A60S2系列1T 8051单片…

高校教务系统登录页面JS分析——长沙理工大学教务系统

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文将是本专栏最后一篇文章,我看了绝大多数高…

【代码随想录】算法训练计划18

1、513. 找树左下角的值 题目: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 思路: 递归,规则,基本可以自己写出来 var maxDepth int var res int fun…

Spring Gateway基础知识总结

本文主要总结Spring Gateway的基础用法,内容包括网关、Spring Gateway工作流程、Spring Cloud Gateway搭建、路由配置方式、负载均衡实现、断言工厂这几个部分 目录 1. 网关 1.1 网关介绍 1.2 网关对比 1.3 Spring Gateway 1.4 核心概念 1.6 总结 2. Spring …

React进阶之路(二)-- 组件通信、组件进阶

文章目录 组件通信组件通信的意义父传子实现props说明子传父实现兄弟组件通信跨组件通信Context通信案例 React组件进阶children属性props校验组件生命周期 组件通信 组件通信的意义 组件是独立且封闭的单元,默认情况下组件只能使用自己的数据(state&a…

【C++破局】C++内存管理之new与deleted剖析

​作者主页 📚lovewold少个r博客主页 ⚠️本文重点:c内存管理部分知识点梳理 👉【C-C入门系列专栏】:博客文章专栏传送门 😄每日一言:花有重开日,人无再少年! 目录 C/C的内存分配机…

Git 命令详解

系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 C技能系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream we…

【Python】Python爬虫使用代理IP的实现

前言 在爬虫的过程中,我们经常会遇到需要使用代理IP的情况。比如,针对目标网站的反爬机制,需要通过使用代理IP来规避风险。因此,本文主要介绍如何在Python爬虫中使用代理IP。 一、代理IP的作用 代理IP,顾名思义&…

JVM虚拟机:垃圾回收器之Parallel Old(老年代)

本文重点 本文将学习老年代的另外一种垃圾回收器Parallel Old(PO),这是一种用于老年代的并行化垃圾回收器,它使用标记整理算法进行垃圾回收。 历史 在1.6之前,新生代使用Parallel Scavenge只能搭配老年代的Serial Old收集器,而…

Ubuntu22.04 下 NFS 相关问题与完整配置(客户机 MacOS)

categories: [Linux-Shell] tags: Linux NFS 写在前面 最近折腾一下 NFS, 先白嫖一顿华子云的 1 个月服务器, 2C4G 感觉不错了, 但NFS 配置起来还是有点难度, 主要还是随机分配的端口配置方面比较恶心. server环境: 华为云 2C4G Ubuntu22.04 client环境: MacOS M1 with brew …

小程序多文件上传 Tdesign

众所周知,小程序文件上传还是有点麻烦的,其实主要还是小程序对的接口有诸多的不便,比如说,文件不能批量提交,只能一个个的提交,小程序的上传需要专门的接口。 普通的小程序的页面也比普通的HTML复杂很多 现…

Java,多线程,线程安全的懒汉式、死锁、ReentrantLock的使用以及一些知识点补充

关于线程安全地懒汉式有以下几种方式: /*** 实现线程安全的懒汉式*/ public class BankTest {Bank b1 null;Bank b2 null;public static void main(String[] args){BankTest bb new BankTest();Thread t1 new Thread(){Overridepublic void run(){bb.b1 Bank.…

安卓RadioButton设置图片大小

RadioButton都不陌生,一般我们都会设置图片在里面,这就涉及一个问题,图片的大小。如果图片过大,效果很不理想。搜了很多方法,都不理想。无奈只能自己研究了 代码如下: 1,一个简单的 RadioButt…

IBM Qiskit量子机器学习速成(一)

声明:本篇笔记基于IBM Qiskit量子机器学习教程的第一节,中文版译文详见:https://blog.csdn.net/qq_33943772/article/details/129860346?spm1001.2014.3001.5501 概述 首先导入关键的包 from qiskit import QuantumCircuit from qiskit.u…

力扣138:随机链表的复制

力扣138:随机链表的复制 题目描述: 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff…

《网络协议》02. 物理层 · 数据链路层 · 网络层

title: 《网络协议》02. 物理层 数据链路层 网络层 date: 2022-08-31 22:26:48 updated: 2023-11-08 06:58:52 categories: 学习记录:网络协议 excerpt: 物理层(数据通信模型,信道)、数据链路层(封装成帧&#xff0c…

NtripShare Mos地铁自动化监测终端盒子硬件设计

自动化监测产品到目前为止做了接近一年,在软件层面上,控制终端软件、平台软件、网平差算法都已解决,硬件盒子始终是心里过不去的坎,最终还是没有耐住性子自己做了一把。 选型如下: 1、主板:瑞芯微RK3568主板。 2、外…