当前位置: 首页 > news >正文

【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]:分屏时光标跳到另一个屏幕

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【学习笔记】Day 11
  • C++11中的左右值引用(略带复习)
  • PyTorch 基础学习(1) - 快速入门
  • 从零开始搭建 LVS 高性能集群 (DR模式)
  • JAVA中的对象流ObjectInputStream
  • uniapp实现自定义弹窗组件,支持富文本传入内容
  • Linux:Linux环境基础开发工具使用
  • DIAdem 与 LabVIEW
  • 【数据结构篇】~顺序表
  • Golang | Leetcode Golang题解之第336题回文对
  • 分布式锁实现方案--redis、zookeeper、mysql
  • Java从zip文件中读取指定的csv文件使用EasyExcel解析出现流关闭异常Stream closed
  • 【常见算法题】斐波那契数列(矩阵快速幂)
  • 歌曲爬虫下载
  • java多线程(初阶)
  • $translatePartialLoader加载失败及解决方式
  • 【391天】每日项目总结系列128(2018.03.03)
  • co.js - 让异步代码同步化
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • django开发-定时任务的使用
  • ES6语法详解(一)
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • java中的hashCode
  • React-Native - 收藏集 - 掘金
  • SQLServer之创建显式事务
  • TCP拥塞控制
  • Zepto.js源码学习之二
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 回顾 Swift 多平台移植进度 #2
  • 如何解决微信端直接跳WAP端
  • 手写双向链表LinkedList的几个常用功能
  • 学习使用ExpressJS 4.0中的新Router
  • #14vue3生成表单并跳转到外部地址的方式
  • #stm32整理(一)flash读写
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (¥1011)-(一千零一拾一元整)输出
  • (02)Unity使用在线AI大模型(调用Python)
  • (1)Android开发优化---------UI优化
  • (1)虚拟机的安装与使用,linux系统安装
  • (21)起落架/可伸缩相机支架
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (zhuan) 一些RL的文献(及笔记)
  • (阿里云万网)-域名注册购买实名流程
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (四)stm32之通信协议
  • (一)、python程序--模拟电脑鼠走迷宫