【Linux基础】Linux中的开发工具(1)--yum和vim

目录

  • ✈️前言
  • 一,Linux 软件包管理器 yum
    • 1. 什么是软件包
    • 2. 如何安装软件
    • 3. 如何卸载软件
  • 二,Linux编辑器-vim使用
    • 1. vim的基本概念
      • 1.1 命令/正常/普通模式
      • 1.2 插入模式
      • 1.3 底行模式
  • 三,vim命令模式命令集
    • 1. 移动光标
    • 2. 删除字符
    • 3. 复制
    • 4. 替换
    • 5. 撤销上一次操作
    • 6. 注释和去注释
    • 7. 跳至指定的行
    • 8. 更改
  • 四,vim底行模式命令集
    • 1. 列出行号
    • 2. 查找字符
    • 3. 保存文件
    • 4. 离开vim
    • 5. 不退出vim,对代码进行编译执行
    • 6. 分屏

点击跳转至文章: 【Linux基础】对Linux权限的理解与管理

✈️前言

前面我们已经介绍了Linux的基本指令和文件,目录权限的管理。本篇文件我们介绍Linux中的基础开发工具—yum与vim,重点是要熟练的使用vim的操作命令

一,Linux 软件包管理器 yum

在Linux中常见的软件安装方式有:yum/apt,rpm安装包安装,源码安装其中,centos默认是用yum,ubuntu默认是用apt

1. 什么是软件包

在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译, 得到可执行程序。

但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装。

软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系

yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器。 主要应用在Fedora,RedHat,Centos等发行版上

2. 如何安装软件

通过 yum,我们可以通过很简单的一条命令完成 gcc 的安装

sudo yum install -y lrzsz

(1) yum 会自动找到都有哪些软件包需要下载
(2) -y 可以避免在下载安装过程中每次询问我们是否安装
(3) lrzsz这个工具用于windows机器和远端的 Linux 机器通过 XShell 传输文件,安装完毕之后可以通过拖拽的方式将文件上传过去

注意事项:

1、安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成
2、yum安装软件只能一个装完了再装另一个。正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错。
3、如果 yum 报错, 请自行百度

3. 如何卸载软件

仍然是一条命令:

sudo yum remove lrzsz

二,Linux编辑器-vim使用

1. vim的基本概念

vim是一个多模式的编辑器。我们目前使用vim能接触到的有五种模式:命令/正常/普通模式,插入模式,底行模式,visual block模式但是重点掌握前三种模式

1.1 命令/正常/普通模式

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式

1.2 插入模式

只有在插入模式下,才可以做文字输入,按「Esc」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式

1.3 底行模式

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作在命令模式下,shift+: 即可进入该模式要查看你的所有模式:打开vim,底行模式直接输入 :help vim-modes

五种模式的切换如下图:

在这里插入图片描述

(1) 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面

$ vim test.c

不过有一点要特别注意就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字

(2) [正常模式]切换至[插入模式]

输入a:是从光标当前位置开始输入文字。
输入i:光标所在位置的下一个位置开始输入文字。
输入o:是插入新的一行,从行首开始输入文字。

(3) [插入模式]切换至[正常模式]

目前处于[插入模式],就只能一直输入文字如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除

(4) [正常模式]切换至[底行模式]

「shift + ;」, 其实就是输入「:」

(5) 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「底行模式」,例如

: w (保存当前文件)
: wq (输入「wq」,存盘并退出vim)
: q! (输入q!,不存盘强制退出vim)

所以,在任何模式下想要回命令模式,直接无脑 [Esc]

三,vim命令模式命令集

1. 移动光标

  • vim可以直接用键盘上的按键来上下左右移动,但正规的vim是用小写英文字母 [h],[j],[k],[l],分别控制光标左,下,上,右移一格
  • [shift+g = G]:定位到文本的末尾
  • [n+shift+g]:定位到文本的第n行
  • [gg]:定位到文本的最开始
  • [$]:移动到光标所在行的"行尾"
    -[ ^]:移动到光标所在行的"行首"
  • [w]:以单词为单位,向后跳
  • [e] :以单词为单位,向前跳
  • [ctrl + b]:屏幕往"后"移动一页
  • [ctrl + f] :屏幕往"前"移动一页

2. 删除字符

  • [x]:每按一次,删除光标所在位置的一个字符
  • [n+x]:删除n个字符例如,[6x]表示删除光标所在位置的"后面(包含自己在内)"6个字符
  • [dd]:删除光标所在行
  • [n+dd]:从光标所在行开始删除n行
  • [X]:大写的X,每按一次,删除光标所在位置的“前面”一个字符
  • [n+X]:例如,[20X]表示删除光标所在位置的“前面”20个字符

3. 复制

  • [yy]:复制光标所在行到缓冲区
  • [n+yy]:复制n行例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字
  • [p]:将缓冲区内的字符贴到光标所在位置注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能
  • [yw]:将光标所在之处到字尾的字符复制到缓冲区中
  • [n+yw]:复制n个字到缓冲区

4. 替换

  • [r]:替换光标所在处的字符
  • [R]:批量替换。替换光标所到之处的字符,直到按下[ESC]键为止

5. 撤销上一次操作

  • [u]:如果您误执行一个命令,可以马上按下[u],回到上一个操作按多次“u”可以执行多次回复
  • [ctrl + r] :撤销的恢复

6. 注释和去注释

  • 注释:ctrl+v --> hjkl(光标定位) -->shift+i --> //(双斜杠) --> Esc
  • 去注释:ctrl+v --> hjkl --> d

7. 跳至指定的行

  • [ctrl + g]:列出光标所在行的行号
  • [n+G]:例如,[15G],表示移动光标至文章的第15行行首

8. 更改

  • [cw]:更改光标所在处的字到字尾处
  • [c+n+w]:例如,[c3w]表示更改3个字

四,vim底行模式命令集

在使用底行模式之前,请记住先按[ESC]键确定您已经处于命令模式,再按[:]冒号即可进入底行模式

1. 列出行号

  • [set nu/set nonu]:设置/取消行号

2. 查找字符

  • [ / + 关键字]: 先按 [/] 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以==一直按 [n]==会往后寻找到您要的关键字为止。
  • [? + 关键字]:先按 [?] 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 [n] 会往前寻找到您要的关键字为止。

3. 保存文件

  • [w]: 在冒号后输入字母[w]就可以将文件保存起来

4. 离开vim

  • [q]:按[q]就是退出,如果无法离开vim,可以在[q]后跟一个 [!] 强制离开vim

  • [wq]:一般建议离开时,搭配 [w] 一起使用,这样在退出的时候还可以保存文件

  • [!ls],[!ll],[!pwd]:直接跳回目录并执行该命令

5. 不退出vim,对代码进行编译执行

!gcc code.c -o hello.txt
! ./hello.txt

6. 分屏

  • [vs + 文件名]:在vim中分屏打开指定文件。看光标判断字在哪个文件里
  • [ctrl + ww]:分屏时光标跳到另一个屏幕

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

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

相关文章

用python制作88键赛博钢琴(能用鼠标键盘进行弹奏)

用python制作88键赛博钢琴 前言 恭喜这位博主终于想起了自己的账号密码! 时光荏苒,转眼间已逾一年未曾在此留下墨香。尽管这一年间,博主投身于无尽的忙碌与挑战之中,但令人欣慰的是,那份初心与热情似乎并未因岁月的流…

Django后台数据获取展示

​ 续接Django REST Framework,使用Vite构建Vue3的前端项目 1.跨域获取后台接口并展示 安装Axios npm install axios --save 前端查看后端所有定义的接口 // 访问后端定义的可视化Api接口文档 http://ip:8000/docs/ // 定义的学生类信息 http://ip:8000/api/v1…

Ubuntu下交叉编译器工具链的安装方法

本篇文章记录Ubuntu下交叉编译器工具链的安装方法。 目录 一、交叉编译器 1、交叉编译器简介 2、获取交叉编译器 3、安装交叉编译器 4、安装相关库 二、结语 一、交叉编译器 1、交叉编译器简介 交叉编译器是一种编译器,它在一种平台上运行,但生成…

如何获取VS Code扩展的版本更新信息

获取VS Code 扩展的版本更新的需求 因为企业内部有架设私有扩展管理器的要求,但是对于一些官方市场的插件,希望可以自动获取这些扩展的更新并上传至私有扩展管理器。于是就有了本篇介绍的需求: 通过API的方式获取VS Code 扩展的更新。 关于…

HarmonyOS Next 系列之列表下拉刷新和触底加载更多数据实现(十一)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现(一) HarmonyOS Next 系列之验证码输入组件实现(二) HarmonyOS Next 系列之底部标签栏TabBar实现(三) HarmonyOS Next 系列之HTTP请求封装和Token…

STM32入门开发操作记录(九)——外部时钟定时器

目录 一、项目准备1. 工程模板2. 器件接线 二、外部时钟1. 端口复用2. 流程示意 三、定时器模块Timer.cTimer.h 四、遮光计数 一、项目准备 1. 工程模板 本篇项目所用模板包含以下模块,声明函数见头文件,模块添加和函数功能详见往期记录。   2. 器件…

Python之格式化输出

格式化输出 方法一:用%方法二:用format()函数设置输出的内容的宽度和小数位数 方法一:用% 直接用print()函数对字符串进行输出,是没有进行格式化控制的。 格式化,是对输出内容的显示方式进行设置。 首先,要…

小程序滑动单元格

项目场景&#xff1a;小程序用户管理列表&#xff0c;通过单元格滑动实现“密码重置”、“删除”功能。 技术框架&#xff1a;uniapp、uview3、ts 效果如下&#xff1a; 前端页面&#xff1a; <template><view class"fui-wrap"><view class"f…

Spring Boot 的Web开发

Spring Boot 的Web开发 一、 静态资源映射规则 总结&#xff1a; 只要静态资源放在类路径下&#xff1a; called /static (or /public or /resources or /METAINF/resources 访问 &#xff1a; 当前项目根路径/ 静态资源名 二、 enjoy模板引擎 Enjoy模板引擎是一个轻量级的…

数据结构-常见的七大排序

上节中我们学习了七大排序中的五种(插入排序、希尔排序、堆排序、选择排序、交换排序) 数据结构-常见的七大排序-CSDN博客 这节我们将要学习快速排序(hoare、指针法、挖洞法(快排的延伸)、快速排序非递归(栈)) 1.快速排序 1.1 hoare法 1.1思路 1.选出一个key&#xff0c;一…

浅看MySQL数据库

有这么一句话&#xff1a;“一个不会数据库的程序员不是合格的程序员”。有点夸张&#xff0c;但是确是如此。透彻学习数据库是要学习好多知识&#xff0c;需要学的东西也是偏难的。我们今天来看数据库MySQL的一些简单基础东西&#xff0c;跟着小编一起来看一下吧。 什么是数据…

Windows 11环境下安装uwsgi的步骤和方法

正在用Django做个小网站&#xff0c;经常要用runserver启动服务观察效果&#xff0c;很不方便&#xff0c;就想装个uwsgi&#xff0c;让服务总是在后台运行&#xff0c;免得切换。上网一查发现&#xff0c;在windows下安装uwsgi不是一件简单的事情&#xff0c;很多人在尝试之后…

Python | Leetcode Python题解之第338题比特位计数

题目&#xff1a; 题解&#xff1a; class Solution:def countBits(self, n: int) -> List[int]:bits [0]for i in range(1, n 1):bits.append(bits[i & (i - 1)] 1)return bits

Spring Web MVC入门(下)

1. 响应 1.1 返回静态页面 创建前端页面&#xff0c;如下图所示&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Index页面</title> </head> <body>Hello,Spring MVC…

设计模式21-组合模式

设计模式21-组合模式&#xff08;Composite Pattern&#xff09; 写在前面 动机定义与结构定义结构主要类及其关系 C代码推导优缺点应用场景总结补充叶子节点不重载这三个方法叶子节点重载这三个方法结论 写在前面 数据结构模式 常常有一些组件在内部具有特定的数据结构。如何…

CVPR2023《DNF: Decouple and Feedback Network for Seeing in the Dark》暗光图像增强论文阅读笔记

相关链接 论文链接 https://openaccess.thecvf.com/content/CVPR2023/papers/Jin_DNF_Decouple_and_Feedback_Network_for_Seeing_in_the_Dark_CVPR_2023_paper.pdf 代码链接 https://github.com/Srameo/DNF 摘要 RAW数据的独特属性在低光照图像增强方面展现出巨大潜力。…

使用RKNN在Orange Pi 5 (RK3588s) 上部署推理PPO深度学习模型

文章目录 一、前言1️⃣、Orange Pi 是什么&#xff1f;2️⃣、PPO 是什么&#xff1f;3️⃣、RKNN 是什么&#xff1f;3️⃣、ONNX 是什么&#xff1f; 二、项目简介三、部署流程1️⃣、PPO 网络结构2️⃣、PPO 输出模型&#xff0c;模型转换&#xff0c;以及对比检查3️⃣、.…

ECMAScript6语法:默认参数和rest参数

1、默认参数 默认参数即在定义函数的参数列表中指定了默认值的参数。在 ES5 中&#xff0c;并没有提供在参数列表中指定参数默认值的语法&#xff0c;要想为函数的参数指定默认值&#xff0c;只能在函数体中实现&#xff0c;示例代码如下&#xff1a; function table(width, …

【性能优化】使用Perfetto定位应用启动性能的瓶颈

Android应用启动优化相关的文章已经有很多人都写过了&#xff0c;但是主要都是聚焦在&#xff0c;为了启动性能都做了哪些改动上&#xff0c;少见有文章会说应该如何分析、识别应用的启动性能。 本篇文章将会结合我个人对Perfetto的实际使用经历&#xff0c;讲解车载应用的启动…

前端post传入拿到数据,后端报null,并且能够添加或者编辑成功

检查conterller层注解接到实体类的注解是不是没加&#xff08; RequestBody &#xff09; 后端&#xff1a; 前端&#xff1a; 那么就看注解&#xff0c;因为contrller层有个接值注解&#xff08; RequestBody &#xff09;