【linux基础(五)】Linux中的开发工具(上)---yum和vim
💓博主CSDN主页:杭电码农-NEO💓
⏩专栏分类:Linux从入门到开通⏪
🚚代码仓库:NEO的学习日记🚚
🌹关注我🫵带你学更多操作系统知识
🔝🔝
Linux中的开发工具
- 1. 前言
- 2. Linux软件包管理器:yum
- 3. linux上安装和卸载软件包
- 4. Linux中的编辑器:vim
- 5. vim下的底行模式详解
- 6. vim下的正常模式详解(上)
- 7. vim下的正常模式详解(下)
- 8. vim下的替换模式
- 9. vim下的视图模式
- 10. vim下的多线程操作
- 11. 总结以及拓展
1. 前言
理解了Linux基本指令和权限之后
终于开始了与代码相关的工具的使用
想必各位早已听说过vim的大名,这篇文章
将带你深入浅出vim的各种使用方法
本章重点:
本篇文章重点介绍vim文本工具的使用
以及vim的五种模式,并且带大家熟悉
Linux下的下载和卸载软件的指令:yum
2. Linux软件包管理器:yum
不要觉得yum有多神奇多深奥
yum其实就是一个软件,也可以叫商店
和你手机上的应用商店或app store一样
yum的功能就是搜索并下载需要的软件包
注:使用yum必须联网!
查看一共有哪些软件包
使用指令:
yum list
由于Linux下的软件包十分多
所以可以使用以下指令来搜索关键字
使用指令:
yum list | grep 关键字
比如我输入关键字lrzsz:
3. linux上安装和卸载软件包
使用指令:
yum install 想安装的软件包名
使用这条指令后,输入y确定下载
查看到complete就说明下载完成了!
注意事项:
yum下载时往往会向系统目录写入内容
一般需要sudo或切换到root账号才能下载
yum在安装一共软件的过程中再安装其他
软件,此时yum会报错!
当你不知道你想要下载的软件叫什么名字时
可以无脑百度,百度上还有许多好玩的软件包
使用指令:
yum remove 想要卸载的软件
这条命令和下载一样,最好使用sudo
或切换到root账号来操作
4. Linux中的编辑器:vim
vim可以理解为文本编辑器
就像Windows中的写字板一样
vim有大概12种模式,但是常用的有五种
本篇文章只讲解这五种模式
首先我们先创建一个.c文件来写C语言
然后vim此文件进入到vim编辑界面
vim进入文本编辑后默认是正常模式
正常模式无法输入内容,此时介绍第二种模式
输入模式
正常模式切换到输入模式可以按:a i o
三个键,a键默认定位至你光标的下一个位置
o键默认定位至你光标的下一列开头
然而i键默认定位至你的光标处
此时写一段简单的代码:
此时想要退出并保存此代码,需要第三个模式:
底行模式
底行模式不能从输入模式跳转
必须从正常模式跳转到底行模式
所以我们要先从输入模式跳转到
正常模式才能再跳转到底行模式
以下流程图帮你理解:
再来捋一下流程:首先进入文本编辑界面
时是正常模式,想要输入代码先按:a,i,o
切换到输入模式,输完代码后按ESC键
退出到正常模式,再按shift+;跳转到
底行模式进行保存
5. vim下的底行模式详解
切换到底行模式后,界面左下角有一冒号:
此时就进入到了底行模式,在写代码时
既没有自动换行和括号匹配,也没有行号
非常的不方便,这一点后面会一一解决
设置行号
在底行模式输入:
set nu
取消行号
在底行模式输入:
set nonu
保存并退出
在底行模式输入:
wq
- w:保存当前文件
- w!:强制保存
- q:退出
- q!:强制退出
- wq!:强制保存并退出
查找字符
在底行模式输入:
/关键字
此关键字会语法高亮出来
若这个关键字不是你想找的内个
可以按n键
跳到下一个关键字位置
除此之外,底行模式还有你意想不到的用处
它可以在不退出vim的情况下
输入并执行指令,并且在当前画面显示出来
比如输入:man printf
可以在底行模式查阅字典
6. vim下的正常模式详解(上)
正常模式的所有操作都是在
高效移动光标
请注意,将你的Linux放在旁边
一边看指令一般实践!
定位至代码的第一行
在正常模式下输入:
gg
定位至代码的最后一行
在正常模式下输入:
shift+g
定位至代码的任意一行
在正常模式下输入:
n+shift+g
定位至特点一行的开始
在正常模式下输入:
shift+6(^)
定位至特点一行的结尾
在正常模式下输入:
shift+4($)
光标的上下左右移动
h键 : 左移
j键 : 下移
k键 : 上移
l键 : 右移
现在的键盘将hjkl键和上下左右
分离开来了,但是vim诞生时期较早
那时的键盘没有上下左右键
建议以后使用hjkl移动光标!
注:使用w和b可以一次性跳过/回退一个单词
若遇见的字符不是单词,则一格一格的跳
7. vim下的正常模式详解(下)
现在我们可以高效的移动光标了
那移动光标是为了啥?当然是为了执行
复制粘贴剪贴删除等操作!
复制当前行或n行
在正常模式输入:
yy
或n+yy
粘贴内容到当前行或粘贴n次
在正常模式输入:
p
或n+p
撤销上一步的操作
在正常模式输入:
u
撤销上一步的撤销
在正常模式输入:
CTRL + r
删除(剪切)当前行或n行
在正常模式输入:
dd
或n+dd
向后/前剪切n个字符
在正常模式输入:
n+小x
或n+大x
大小写互相转换
在正常模式输入: shift + ` (~)
不断向后转换,大写变小写,小写变大写
你可能会问,这些操作我可以在输入模式
下复制粘贴输入删除等等都可以完成
为什么还有学正常模式下的指令??
因为你这样不够优雅(bushi)
这是因为在熟悉了各个操作后,效率
会大大提升,甚至比在图形化界面还方便
8. vim下的替换模式
这个模式也是我们常用的模式之一
有时候,我们不想删除代码也不想
添加代码,只想在原先的代码上修改
比如将字符x修改为r,我们要先进入
插入模式再删除掉x再输入r,非常的不优雅
转换到替换模式
在正常模式输入:
shift+r
在此模式下,所有的输入都会被当作替换!
9. vim下的视图模式
我们在用vs写代码时想要注释掉一块代码
非常任意,只需要选中所有代码并点击右上角
的一个键即可,但在Linux中,没有可视化界面
所以我们要依赖视图模式来帮助我们注释
切换为视图模式
在正常模式输入:
CTRL +v
在左下角显示visual就代表进入了视图模式
先看以下视频来了解怎样注释:
可以总结为,用j,k选中要注释的行
选好后按shift+i进入插入模式
再输入//后按ESC退出,此时代码就被注释掉了
取消注释
进入视图模式,使用hjkl选中要取消注释
的区域,注意这里要选中前两列,否则只会
删除//的第一个/,选好后输入d,即可删除
10. vim下的多线程操作
vim文本编辑器可以同时打开多个文件
在vim的底行模式下输入:vs 想要打开的文件名
此时就可以打开另外一个文件
虽然说有多个文件,
但是光标只有一个!
光标在哪个文件,现在就在编辑哪个文件
切换文件
使用指令:
CRTL + ww
可以切换文件,进行不同的操作
可以在A文件复制内容并且拷贝到B文件
11. 总结以及拓展
Linux下的开发工具的使用主要是
在教大家怎样高效的Linux下进行编程
vim的多种模式大家要一一熟悉,不要依赖
输入模式修改所有代码,一个合格的程序员
vim必须玩的非常6!
本篇文章干货很多,需要下来慢慢记忆
指令大览
yum list
yum list | grep 关键字
yum install ...
yum remove ...
vim 文件名.c
a,i,o进入输入模式
shift + ; 进入底行模式
CTRL + v 进入视图模式
shift + r 进入替换模式
CTRL + ww 切换文件
yy,dd,p,u等指令
vim配置的拓展
可以发现,虽然现在的vim可以写代码
但是写起来非常别扭,因为它没有自动换行
也没有缩进和括号补齐,所以还不是一个
合格的C/C++代码编辑器,我给大家推荐一个
网址,里面有vim配置的全套下载!
网址链接:
vimforcpp
在确保你有curl指令的前提下,输入这行代码:
这时,所有常用的vim配置就下载好了
现在再打开你的.c文件写写代码
会发现现在和vs上写代码基本上是一样的了!
相关文章:
【linux基础(五)】Linux中的开发工具(上)---yum和vim
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:Linux从入门到开通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学更多操作系统知识 🔝🔝 Linux中的开发工具 1. 前言2.…...
C++学习之list的实现
在了解学习list实现之前我们首先了解一下关于迭代器的分类: 按功能分类: 正向迭代器 反向迭代器 const正向迭代器 const反向迭代器 按性质分类: 单向迭代器 只能 例如单链表 双向迭代器 可,也可-- 例如双…...
一种高效且节约内存的聚合数据结构的实现
一种高效且节约内存的聚合数据结构的实现 在特定的场景中,特殊定制数据结构能够得到更加好的性能且更节约内存。 聚合函数GroupArray的问题 GroupArray聚合函数是将分组内容组成一个个数组,例如下面的例子: SELECT groupArray(concat(ABC…...
机器学习(10)---特征选择
文章目录 一、概述二、Filter过滤法2.1 过滤法说明2.2 方差过滤2.3 方差过滤对模型影响 三、相关性过滤3.1 卡方过滤3.2 F检验3.3 互信息法3.4 过滤法总结 四、Embedded嵌入法4.1 嵌入法说明4.2 以随机森林为例的嵌入法 五、Wrapper包装法5.1 包装法说明5.2 以随机森林为例的包…...
Python之数据库(MYSQL)连接
一)数据库SQL语言基础 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database…...
【建站教程】使用阿里云服务器怎么搭建网站?
使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,阿小云来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流程&#x…...
【自然语言处理】关系抽取 —— MPDD 讲解
MPDD 论文信息 标题:MPDD: A Multi-Party Dialogue Dataset for Analysis of Emotions and Interpersonal Relationships 作者:Yi-Ting Chen, Hen-Hsen Huang, Hsin-Hsi Chen 期刊:LREC 2020 发布时间与更新时间:2020 主题:自然语言处理、关系抽取、对话场景、情感预测 数…...
深入理解JVM虚拟机第三篇:JVM的指令集架构模型和JVM的生命周期
文章目录 一:JVM的指令集架构模型 1:基于栈式架构的特点...
[小尾巴 UI 组件库] 组件库配置与使用
文章归档于:https://www.yuque.com/u27599042/row3c6 组件库地址 npm:https://www.npmjs.com/package/xwb-ui?activeTabreadme小尾巴 UI 组件库源码 gitee:https://gitee.com/tongchaowei/xwb-ui小尾巴 UI 组件库测试代码 gitee:…...
Linux系统中fork()函数的理解
fork() 函数是一个在Unix和类Unix操作系统中常见的系统调用,用于创建一个新的进程,该进程是调用进程(父进程)的副本。fork() 函数的工作原理如下: 1. 当父进程调用 fork() 时,操作系统会创建一个新的进程&a…...
Linux网络编程:网络协议及网络传输的基本流程
目录 一. 计算机网络的发展 二. 网络协议的认识 2.1 对于协议分层的理解 2.2 TCP/IP五层协议模型 2.3 OSI七层模型 三. 网络传输的流程 3.1 同一网段中计算机通信的流程 3.2 不同网段中计算机设备的通信 3.3 对于IP地址和MAC地址的理解 3.4 数据的封装和解包 四. 总结…...
【大数据之Kafka】十、Kafka消费者工作流程
1 Kafka消费方式 (1)pull(拉)模式:消费者从broker中主动拉取数据。(Kafka中使用) 不足:如果Kafka中没有数据,消费者可能会陷入循环,一直返回空数据。 &#…...
如何确保ChatGPT的文本生成对特定行业术语的正确使用?
确保ChatGPT在特定行业术语的正确使用是一个重要而复杂的任务。这涉及到许多方面,包括数据预处理、模型训练、微调、评估和监控。下面我将详细介绍如何确保ChatGPT的文本生成对特定行业术语的正确使用,并探讨这一过程中的关键考虑因素。 ### 1. 数据预处…...
行业追踪,2023-09-11
自动复盘 2023-09-11 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...
LVS + Keepalived群集
文章目录 1. Keepalived工具概述1.1 什么是Keepalived1.2 工作原理1.3 Keepailved实现原理1.4 Keepalived体系主要模块及其作用1.5 keepalived的抢占与非抢占模式 2. 脑裂现象 (拓展)2.1 什么是脑裂2.2 脑裂的产生原因2.3 如何解决脑裂2.4 如何预防脑裂 …...
springboot将jar改成war
一、maven项目 1、修改pom文件 <packaging>war</packaging>2、添加Servlet API依赖,Spring Boot的Starter依赖通常会包含这个依赖,所以你可能已经有了,没有就需要添加 <dependency><groupId>javax.servlet</gr…...
从9.10拼多多笔试第四题产生的01背包感悟
文章目录 题面基本的01背包问题本题变式 本文参考: 9.10拼多多笔试ak_牛客网 (nowcoder.com) 拼多多 秋招 2023.09.10 编程题目与题解 (xiaohongshu.com) 题面 拼多多9.10笔试的最后一题,是一道比较好的01背包变式问题,可以学习其解法加深对…...
搭建自己的OCR服务,第一步:选择合适的开源OCR项目
一、OCR是什么? 光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。 亦即将图像中的文字进行识别,并以文本的形式返回。 二、OCR的基本流程 1…...
【C++】VScode配置C/C++语言环境(简洁易懂版)
目录 一、下载VScode(装好直接跳第五步)二、安装VScode三、VScode设置语言为中文四、VScode切换主题(个人爱好)五、下载C语言编译器(MinGW-W64 GCC)六、配置编译器环境变量七、配置VScode八、使用单独窗口…...
【hive】—原有分区表新增加列(alter table xxx add columns (xxx string) cascade;)
项目场景: 需求:需要在之前上线的分区报表中新增加一列。 实现方案: 1、创建分区测试表并插入测试数据 drop table test_1; create table test_1 (id string, score int, name string ) partitioned by (class string) row format delimit…...
verilog学习笔记7——PMOS和NMOS、TTL电路和CMOS电路
文章目录 前言一、PMOS和NMOS1、NMOS2、PMOS3、增强型和耗尽型4、两者面积大小 二、CMOS门电路1、非门2、与非门3、或非门4、线与逻辑5、CMOS传输门6、三态门 三、TTL电路四、TTL电路 VS CMOS电路五、数字电平六、使用CMOS电路实现逻辑函数1、上拉网络 PUN2、下拉网络 PDN3、实…...
Java知识点二
Java知识点二 1、Comparable内部比较器,Comparator外部比较器2、源码结构的区别:1)Comparable接口:2)Comparator接口: 2、Java反射 1、Comparable内部比较器,Comparator外部比较器 我们一般把Comparable叫…...
基于单片机压力传感器MPX4115检测-报警系统-proteus仿真-源程序
一、系统方案 本设计采用52单片机作为主控器,液晶1602显示,MPX4115检测压力,按键设置报警,LED报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 /***************************************…...
Pytorch02 神经网路搭建步骤
文章目录 import numpy as np import torch from PIL.Image import Image from torch.autograd import Variable# 获取数据 def get_data():train_Xnp.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,7.042,10.791,5.313,7.997,5.654,9.27,3.1])train_Ynp.asarr…...
【源码】JavaWeb+Mysql招聘管理系统 课设
简介 用idea和eclipse都可以,数据库是mysql,这是一个Java和mysql做的web系统,用于期末课设作业 cout<<"如果需要的小伙伴可以http://www.codeying.top";可定做课设 线上招聘平台整合了各种就业指导资源,通过了…...
Java中级编程大师班<第一篇:初识数据结构与算法-数组(2)>
数组(Array) 数组是计算机编程中最基本的数据结构之一。它是一个有序的元素集合,每个元素都可以通过索引进行访问。本文将详细介绍数组的特性、用法和注意事项。 数组的基本特性 数组具有以下基本特性: 有序性: 数…...
杰哥教你面试之一百问系列:java集合
文章目录 1. 什么是Java集合?请简要介绍一下集合框架。2. Java集合框架主要分为哪几种类型?3. 什么是迭代器(Iterator)?它的作用是什么?4. ArrayList和LinkedList有什么区别?它们何时适用&#…...
【数据结构】树和二叉树概念
1.树概念及结构 树概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点,…...
C盘清理教程
C盘清理教程 首先使用space Sniffer 扫一下c盘,然后看一下到底是哪个文件这么大 第二步,创建软链接。 首先将我们需要移动的文件的当前路径拷贝下来:C:\Users\Tom\Desktop\test-link\abc\ghi.txt 然后假设剪切到D盘下:D:\ghi.…...
【实战-05】 flinksql look up join
摘要 look up join 能做什么? 不饶关子直接说答案, look up join 就是 广播。 重要是事情说三遍,广播。flinksql中的look up join 就类似于flinks flink Datastream api中的广播的概念,但是又不完全相同,对于初次访问…...
网站制作软件排名/软文营销文章500字
Maven使用手册 自动化构建工具 本地仓库默认,修改conf下的settings.xml到其他位置 ~\.m2\repository配置阿里云镜像修改conf下的settings.xml 在idea中设置maven仓库 创建web项目 配置java文件夹为可创建class文件 解决报错,跳到deployment 导包使用依…...
网站做资讯需要获取许可证吗/抚顺seo
java内部类 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动&#…...
edu网站开发/扬州seo优化
Golang是谷歌开发的一款开源性语言,暂时比较方便的IDE有Inteillj Idea、LiteIDE、Eclipse(Golipse)等,使用起来比较方便的IDE:LiteIDE和Inteillj IDEA,但是Inteillj IDEA插件更新太慢,以及存在一些问题(go sdk版本支持…...
个人网站建设的流程/游戏推广员骗局
Linux 网络设备驱动程序的体系结构 图片说明如下:网络协议接口层 网络协议接口层向网络层协议提供统一的数据包收发接口,不论上层协议是ARP还是IP,都通过 dev_queue_xmit() 函数发送数据, 并通过 netif_rx() 函数接受数据,这一层的…...
英语网站建设/培训seo去哪家机构最好
一、前言 请务必看到最后。Python牛已经不是一天两天的事了,但是我开始也没想到,Python能这么牛。前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视频换一个不同的场景&…...
wordpress 编辑器推荐/成人大学报名官网入口
弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率三年低至5折,多种配置可选了解详情终端节点|…...