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

LINUX入门篇【4】开发篇--开发工具vim的使用
前言: 从这一篇开始,我们将正式进入使用LINUX进行写程序和开发的阶段,可以说,由此开始,我们才开始真正去使用LINUX。 介绍工具: 1.LINUX软件包管理器yum: 1.yum的介绍: 在LINUX…...
代码随想录算法训练营Day 50 || 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
309.最佳买卖股票时机含冷冻期 力扣题目链接 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时…...

【C语言】【数据结构】【环形链表判断是否带环并返回进环节点】有数学推导加图解
1.判断是否带环: 用快慢指针 slow指针一次走一步,fast指针一次走两步 当两个指针相遇时,链表带环;两个指针不能相遇时,当fast走到倒数第一个节点或为空时,跳出循环返回空指针。 那么slow指针一次走一步&a…...

漏洞扫描-nuclei-poc编写
0x00 nuclei Nuclei是一款基于YAML语法模板的开发的定制化快速漏洞扫描器。它使用Go语言开发,具有很强的可配置性、可扩展性和易用性。 提供TCP、DNS、HTTP、FILE 等各类协议的扫描,通过强大且灵活的模板,可以使用Nuclei模拟各种安全检查。 …...
SpringBoot 自动配置
Condition 自定义条件: 定义条件类:自定义类实现Condition接口,重写 matches 方法,在 matches 方法中进行逻辑判断,返回boolean值 。 matches 方法两个参数: context:上下文对象,可…...

IP-guard WebServer 远程命令执行漏洞
IP-guard WebServer 远程命令执行漏洞 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: app"ip-guard" 漏洞复现1. 构造poc2. 访问文件3. 执行命令 免责声明 仅用于技术交流,目的是向相关安全人员展示漏洞利用方式,以便更好地提高网络安全意识和技术水平。 任何人不…...

每次重启完IDEA,application.properties文件里的中文变成?
出现这种情况,在IDEA打开Settings-->Editor-->File Encodings 然后,你需要将问号改为你需要的汉字。 重启IDEA,再次查看你的.properties文件就会发现再没有变成问号了...

【Truffle】四、通过Ganache部署连接
目录 一、下载安装 Ganache: 二、在本地部署truffle 三、配置ganache连接truffle 四、交易发送 除了用Truffle Develop,还可以选择使用 Ganache, 这是一个桌面应用,他同样会创建一个个人模拟的区块链。 对于刚接触以太坊的同学来说&#x…...

React 其他常用Hooks
1. useImperativeHandle 在react中父组件可以通过forwardRef将ref转发到子组件;子组件拿到父组件创建的ref,绑定到自己的某个元素; forwardRef的做法本身没有什么问题,但是我们是将子组件的DOM直接暴露给了父组件,某下…...

将 ONLYOFFICE 文档编辑器与 С# 群件平台集成
在本文中,我们会向您展示 ONLYOFFICE 文档编辑器与其自有的协作平台集成。 ONLYOFFICE 是一款开源办公套件,包括文本文档、电子表格和演示文稿编辑器。这款套件支持用户通过文档编辑组件扩展第三方 web 应用的功能,可直接在应用的界面中使用。…...

使用电脑时提示msvcp140.dll丢失的5个解决方法
“计算机中msvcp140.dll丢失的5个解决方法”。在我们日常使用电脑的过程中,有时会遇到一些错误提示,其中之一就是“msvcp140.dll丢失”。那么,什么是msvcp140.dll呢?它的作用是什么?丢失它会对电脑产生什么影响呢&…...

VR全景如何应用在房产行业,VR看房有哪些优势
导语: 在如今的数字时代,虚拟现实(VR)技术的迅猛发展为许多行业带来了福音,特别是在房产楼盘行业中。通过利用VR全景技术,开发商和销售人员可以为客户提供沉浸式的楼盘浏览体验,从而带来诸多优…...

11月份 四川汽车托运报价已经上线
中国人不骗中国人!! 国庆小长假的高峰期过后 放假综合症的你还没痊愈吧 今天给大家整理了9条最新线路 广州到四川的托运单价便宜到💥 核算下来不过几毛钱💰 相比起自驾的漫长和疲惫🚗 托运不得不说真的很省事 - 赠送保险 很多客户第一次运车 …...

springcloud图书借阅管理系统源码
开发说明: jdk1.8,mysql5.7,nodejs,idea,nodejs,vscode springcloud springboot mybatis vue elementui 功能介绍: 用户端: 登录注册 首页显示搜索图书,轮播图&…...
主题模型LDA教程:LDA主题数选取:困惑度preplexing
文章目录 LDA主题数困惑度1.概率分布的困惑度2.概率模型的困惑度3.每个分词的困惑度 LDA主题数 LDA作为一种无监督学习方法,类似于k-means聚类算法,需要给定超参数主题数K,但如何评价主题数的优劣并无定论,一般采取人为干预、主题…...

Docker快速入门
Docker是一个用来快速构建、运行和管理应用的工具。 Docker技术能够避免对服务器环境的依赖,减少复杂的部署流程,有了Docker以后,可以实现一键部署,项目的部署如丝般顺滑,大大减少了运维工作量。 即使你对Linux不熟…...

36 Gateway网关 快速入门
3.Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式…...
MyBatis的知识点和简单用法
MyBatis 是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执…...
KITTI数据集(.bin数据)转换为点云数据(.pcd文件)
目录 cmake代码 代码 cmake代码 cmake_minimum_required(VERSION 3.17) project(TEST2)set(CMAKE_CXX_STANDARD 14)# Find PCL find_package(PCL 1.8 REQUIRED)# If PCL was found, add its include directories to the project if(PCL_FOUND)include_directories(${PCL_INC…...

【电路笔记】-节点电压分析和网状电流分析
节点电压分析和网状电流分析 文章目录 节点电压分析和网状电流分析1、节点电压分析1.1 概述1.2 示例 2、网格电流分析2.1 概述2.2 示例 3、总结 正如我们在上一篇介绍电路分析基本定律的文章中所看到的,基尔霍夫电路定律 (KCL) 是计算任何电路中未知电压和电流的强大…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...

PLC入门【4】基本指令2(SET RST)
04 基本指令2 PLC编程第四课基本指令(2) 1、运用上接课所学的基本指令完成个简单的实例编程。 2、学习SET--置位指令 3、RST--复位指令 打开软件(FX-TRN-BEG-C),从 文件 - 主画面,“B: 让我们学习基本的”- “B-3.控制优先程序”。 点击“梯形图编辑”…...
C/Python/Go示例 | Socket Programing与RPC
Socket Programming介绍 Computer networking这个领域围绕着两台电脑或者同一台电脑内的不同进程之间的数据传输和信息交流,会涉及到许多有意思的话题,诸如怎么确保对方能收到信息,怎么应对数据丢失、被污染或者顺序混乱,怎么提高…...
信息系统分析与设计复习
2024试卷 单选题(20) 1、在一个聊天系统(类似ChatGPT)中,属于控制类的是()。 A. 话语者类 B.聊天文字输入界面类 C. 聊天主题辨别类 D. 聊天历史类 解析 B-C-E备选架构中分析类分为边界类、控制类和实体类。 边界…...

安宝特方案丨从依赖经验到数据驱动:AR套件重构特种装备装配与质检全流程
在高压电气装备、军工装备、石油测井仪器装备、计算存储服务器和机柜、核磁医疗装备、大型发动机组等特种装备生产型企业,其产品具有“小批量、多品种、人工装配、价值高”的特点。 生产管理中存在传统SOP文件内容缺失、SOP更新不及、装配严重依赖个人经验、产品装…...