Linux速览(2)——环境基础开发工具篇(其一)

本章我们来介绍一些linux的常用工具

目录

一. Linux 软件包管理器 yum

1.什么是软件包?

2. 查看软件包

3. 如何安装软件

4. 如何卸载软件

5.yum补充

6. 关于 rzsz

二. Linux编辑器-vim使用

 1. vim的基本概念

2. vim的基本操作

3. vim正常模式命令集

4. vim末行模式命令集

5. vim操作总结

6. 简单vim配置

7.补充


一. Linux 软件包管理器 yum

1.什么是软件包?

        (1)在Linux 下安装软件 , 一个通常的办法是下载到程序的源代码 , 并进行编译 , 得到可执行程序 ,但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好 , 做成软件包 ( 可以理解成 windows 上的安装程序)放在一个服务器上 , 通过包管理器可以很方便的获取到这个编译好的软件包 , 直接进行安装。
        (2)软件包和软件包管理器, 就好比 "App" " 应用商店 " 这样的关系 .
        (3)yum(Yellow dog Updater, Modified)是 Linux 下非常常用的一种包管理器 . 主要应用在 Fedora, RedHat, Centos等发行版上 .
注意事项:
        (1)关于 yum 的所有操作必须保证主机 ( 虚拟机 ) 网络畅通 !!!
        (2)可以通过 ping 指令验证
ping www.baidu.com

2. 查看软件包

        通过 yum list 命令可以罗列出当前一共有哪些软件包 . 由于包的数目可能非常之多 , 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如 :
yum list | grep lrzsz
结果如下 :
lrzsz.x86_64          0.12.20-36.el7        @base
注意事项 :
        (1)软件包名称: 主版本号 . 次版本号 . 源程序发行号 - 软件包的发行号 . 主机平台 .cpu 架构 .
        (2)"x86_64" 后缀表示 64 位系统的安装包 , "i686" 后缀表示 32 位系统安装包 . 选择包时要和系统匹配 .
        (3)"el7" 表示操作系统发行版的版本 . "el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6.
        (4)最后一列, base 表示的是 " 软件源 " 的名称 , 类似于 " 小米应用商店 ", " 华为应用商店 " 这样的概念 .

3. 如何安装软件

        通过 yum, 我们可以通过很简单的一条命令完成 gcc 的安装 .
sudo yum install lrzsz
yum 会自动找到都有哪些软件包需要下载 , 这时候敲 "y" 确认安装 .
出现 "complete" 字样 , 说明安装完成 .
注意事项 :
        (1)安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成 .
        (2)yum安装软件只能一个装完了再装另一个 . 正在 yum 安装一个软件的过程中 , 如果再尝试用 yum 安装另外一个软件, yum 会报错 .
        (3)如果 yum 报错 , 请根据情况进行 百度 .

4. 如何卸载软件

        仍然是一条命令:
sudo yum remove lrzsz

5.yum补充

6. 关于 rzsz

  这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件 .
  安装完毕之后可以通过拖拽的方式将文件上传过去.

6.1 安装

常规而言云服务器上一般都已预装,如果没有可以通过以下命令安装:
(1)在 root 账户下:
先输入:
yum list | grep rzsz

查找到需要安装的版本:

然后输入以下命令进行安装:

yum install lrzsz.x86_64

(2)在普通账户下:

sudo yum install -y lrzsz.x86_64

6.2 使用

(1)接收文件

方法一:直接拖拽

        就是直接将文件拖拽到终端就可以了

方法二:直接在终端输入rz
rz

        在弹出的窗口中选择文件即可~~

(2)发送文件
sz

        选择要发的文件即可

二. Linux编辑器-vim使用

vi/vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window mac os 、windows。本章我们统一按照 vim 来进行讲解。

 1. vim的基本概念

vim有 三种模式 ( 其实有好多模式,目前掌握这 3 种即可 ), 分别是命令模式( command mode )、插入模式(Insert mode )和底行模式( last line mode ),各模式的功能区分如下:
(1)正常/普通/命令模式(Normal mode)
        控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode 下,或者到 last line mode
(2)插入模式(Insert mode)
        输入  进入该模式,只有在Insert mode 下,才可以做文字输入,按「 ESC 」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
(3)末行模式(last line mode)
        文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下, shift + :   可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入 :
help vim-modes
我这里一共有 12 种模式 :six BASIC modes six ADDITIONAL modes.

2. vim的基本操作

进入 vim, 在系统提示符号输入 vim 及文件名称后,就进入 vim 全屏幕编辑画面 :
           
vim test.c

注意:       

进入vim之后,是处于[正常模式],要切换到[插入模式]才能够输入文字。

2.1 [正常模式]切换至[插入模式]

       (1)输入a
       (2)输入i
       (3)输入o

2.2 [插入模式]切换至[正常模式]

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

2.3 [正常模式]切换至[末行模式]

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

2.4 退出vim及保存文件

[正常模式]下,按一下「:」冒号键进入「Last line mode,例如:
     (1): w (保存当前文件)
     (2): wq (输入「wq , 存盘并退出 vim)
     (3): q! (输入q!, 不存盘强制退出 vim)

3. vim正常模式命令集

3.1 插入模式

(1)按「 i 」切换进入插入模式「 insert mode 」,按 “i” 进入插入模式后是从光标当前位置开始输入文件;
(2)按「 a 」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
(3)按「 o 」进入插入模式后,是插入新的一行,从行首开始输入文字。

3.2 从插入模式切换为命令模式

(1)按「 ESC 」键。

3.3 移动光标

        (1)vim可以直接用键盘上的光标来上下左右移动,但正规的 vim 是用小写英文字母「 h 」、「 j」、「k 」、 「l 」,分别控制光标左、下、上、右移一格。
        (2)按「G 」:移动到文章的最后。
        (3)按「 $ 」:移动到光标所在行的 行尾 ”。
        (4)按「^ 」:移动到光标所在行的 行首 ”。
        (5)按「w 」:光标跳到下个字的开头。
        (6)按「e 」:光标跳到下个字的字尾。
        (7)按「b 」:光标回到上个字的开头。
        (8)按「#l 」:光标移到该行的第 # 个位置,如: 5 l, 56 l
        (9)按[gg ]:进入到文本开始。
        (10)按[shift g ]:进入文本末端。
        (11)按「ctrl + b 」:屏幕往 移动一页。
        (12)按「ctrl + f 」:屏幕往 移动一页。
        (13)按「ctrl + u 」:屏幕往 移动半页。
        (14)按「ctrl + d 」:屏幕往 移动半页。

3.4 删除文字

(1)「x 」:每按一次,删除光标所在位置的一个字符
(2)「#x 」:例如,「 6x 」表示删除光标所在位置的 后面(包含自己在内) ”6 个字符
(3)「X 」:大写的 X ,每按一次,删除光标所在位置的 前面 一个字符
(4)「#X 」:例如,「 20X 」表示删除光标所在位置的 前面 ”20 个字符
(5)「dd 」:删除光标所在行
(6)「#dd 」:从光标所在行开始删除 #

3.5 复制

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

3.6 替换

(1)「r 」:替换光标所在处的字符。
(2)「R 」:替换光标所到之处的字符,直到按下「 ESC 」键为止。

3.7 撤销上一次操作

(1)「u 」:如果您误执行一个命令,可以马上按下「 u 」,回到上一个操作。按多次 “u” 可以执行多次回复。
(2)「ctrl + r : 撤销的恢复

3.8 更改

(1)「cw 」:更改光标所在处的字到字尾处
(2)「c#w 」:例如,「 c3w 」表示更改 3 个字

3.9 跳至指定的行

(1)「ctrl + g 」列出光标所在行的行号。
(2)「#G 」:例如,「 15G 」,表示移动光标至文章的第 15 行行首。

4. vim末行模式命令集

在使用末行模式之前,请记住先按「 ESC 」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

4.1 列出行号

(1)「set nu : 输入「 set nu 」后,会在文件中的每一行前面列出行号。

4.2 跳到文件中的某一行

(1)  「# : # 」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字 15 ,再回车,就会跳到文章的第15 行。

4.3 查找字符

(1)「/ 关键字」 : 先按「 / 」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按
(2)「n 」会往后寻找到您要的关键字为止。
(3)「? 关键字」:先按「 ? 」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n 」会往前寻找到您要的关键字为止。

4.4 保存文件

(1)「w : 在冒号输入字母「 w 」就可以将文件保存起来

4.5 离开vim

(1) 「q 」:按「 q 」就是退出,如果无法离开 vim ,可以在「 q 」后跟一个「 ! 」强制离开 vim
(2)「wq 」:一般建议离开时,搭配「 w 」一起使用,这样在退出的时候还可以保存文件。

5. vim操作总结

6. 简单vim配置

6.1 配置文件的位置

(1)在目录 /etc/ 下面,有个名为 vimrc 的文件,这是系统中公共的 vim 配置文件,对所有用户都有效。
(2)而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为: “.vimrc” 。例如, /root 目录下,通常已经存在一个.vimrc 文件 , 如果不存在,则创建之。
(3)切换用户成为自己执行 su ,进入自己的主工作目录 , 执行 cd ~
(4)打开自己目录下的 .vimrc 文件,执行 vim .vimrc

6.2 常用配置选项,用来测试

(1)设置语法高亮 : syntax on
(2)显示行号 : set nu
(3)设置缩进的空格数为 4: set shiftwidth=4

6.3 使用插件

要配置好看的 vim ,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户,接下来:
(1)安装 TagList 插件 , 下载 taglist_xx.zip , 解压完成,将解压出来的 doc 的内容放到~ /.vim/doc,  将解压出来的plugin 下的内容拷贝到~ /.vim/plugin
(2)在~ /.vimrc 中添加 :
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1

(3)安装文件浏览器和窗口管理器插件: WinManager

(4)下载 winmanager.zip 2.X 版本以上的
(5)解压 winmanager.zip ,将解压出来的 doc 的内容放到~ /.vim/doc,  将解压出来的 plugin 下的内容拷贝到~/.vim/plugin
(6)在~ /.vimrc 中添加:             
let g:winManagerWindowLayout=‘FileExplorer|TagList
nmap wm :WMToggle<cr>

(7)然后重启vim,打开~/XXX.c或~/XXX.cpp, normal状态下输入"wm", 你将看到上图的效果。更具体移步:点我, 其他手册,请执行 vimtutor 命令。

6.4 参考资料

Vim从入门到牛逼(vim from zero to hero)

7.补充

待续

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【核弹级软安全事件】XZ Utils库中发现秘密后门,影响主要Linux发行版,软件供应链安全大事件

Red Hat 发布了一份“紧急安全警报”&#xff0c;警告称两款流行的数据压缩库XZ Utils&#xff08;先前称为LZMA Utils&#xff09;的两个版本已被植入恶意代码后门&#xff0c;这些代码旨在允许未授权的远程访问。 此次软件供应链攻击被追踪为CVE-2024-3094&#xff0c;其CVS…

数据结构——二叉树——堆

前言&#xff1a; 在前面我们已经学习了数据结构的基础操作&#xff1a;顺序表和链表及其相关内容&#xff0c;今天我们来学一点有些难度的知识——数据结构中的二叉树&#xff0c;今天我们先来学习二叉树中堆的知识&#xff0c;这部分内容还是非常有意思的&#xff0c;下面我们…

docker-compose命令管理docker命令集合

Docker-Compose 简介 Docker-Compose 项目是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Docker-Compose 项目由 Python 编写&#xff0c;调用 Docker 服务提供的API来对容器进行管理。因此&#xff0c;只要所操作的平台支持 Docker API&#xff…

zookeeper如何管理客户端与服务端之间的链接?(zookeeper sessions)

zookeeper客户端与服务端之间的链接用zookeeper session表示。 zookeeper session有三个状态&#xff1a; CONNECTING, ASSOCIATING, CONNECTED, CONNECTEDREADONLY, CLOSED, AUTH_FAILED, NOT_CONNECTED&#xff08;start时的状态&#xff09; 1、CONNECTING 。 表明客户…

期货学习笔记-MACD指标学习1

MACD常规参数与优化参数降低容错率的使用技巧 MACD的基本概念及组成 概念 MACD是杰拉德 阿佩尔于1979年提出的&#xff0c;利用收盘价的短期&#xff08;常用为12日&#xff09;指数移动平均线与长期&#xff08;常用为26日&#xff09;指数移动平均线之间的聚合与分离情况&a…

【Gd2O3】Gd2O3栅极电介质增强GaN器件的可靠性

【Effects of Gd2O3 Gate Dielectric on Proton-Irradiated AlGaN/GaN HEMTs】 概括总结&#xff1a; 该研究探讨了质子辐射对使用Gd2O3作为栅极电介质的AlGaN/GaN高电子迁移率晶体管&#xff08;HEMTs&#xff09;的影响。通过对比肖特基栅极HEMTs和MOS-HEMTs在2 MeV质子辐射…

基础布局之LinearLayout线性布局

目录 一、基础属性二、重点属性2.1 weight(权重)属性&#xff1a;2.2 gravity 一、基础属性 LinearLayout默认方向是水平排放 属性作用android:id控件的ID&#xff0c;可以通过这个ID号来找到对应的控件android:layout_width控件的宽度android:layout_height控件的高度androi…

HarmonyOS实战开发-switch、chart组件的使用

介绍 本篇Codelab基于switch组件和chart组件&#xff0c;实现线形图、占比图、柱状图&#xff0c;并通过switch切换chart组件数据的动静态显示。要求实现以下功能&#xff1a; 实现静态数据可视化图表。打开开关&#xff0c;实现静态图切换为动态可视化图表。 相关概念 swit…

浅谈WPF之路由事件

为了降低由事件订阅带来的耦合度&#xff0c;和代码量&#xff0c;WPF推出了路由事件机制。路由事件与直接事件的区别在于&#xff0c;直接事件激发时&#xff0c;发送者直接将消息通过事件订阅者交给事件响应者&#xff0c;事件响应者对事件的发生做出响应。路由事件的订阅者和…

pnpm比npm、yarn好在哪里?

前言 pnpm对比npm/yarn的优点&#xff1a; 更快速的依赖下载更高效的利用磁盘空间更优秀的依赖管理 我们按照包管理工具的发展历史&#xff0c;从 npm2 开始讲起&#xff1a; npm2 使用早期的npm1/2安装依赖&#xff0c;node_modules文件会以递归的形式呈现&#xff0c;严格…

简单了解波 Mono-repo Multi-repo(Poly-repo)

Mono-repo 和 Multi-repo 是软件开发中代码管理的两个不同策略。Mono-repo & Multi-repo 孰优孰劣是个老生常谈得话题了&#xff0c;这里就不 PK 了&#xff0c;“略微”看下两者区别。 当我们使用 Git 作为版本控制系统管理项目的代码时&#xff0c;那么 monorepo 与 mul…

模拟游戏《幸福工厂》好玩吗?《幸福工厂》怎么在mac电脑上打开?

关于《幸福工厂》这款游戏是否好玩&#xff0c;普遍的玩家反馈和评价表明&#xff0c;《幸福工厂》&#xff08;Satisfactory&#xff09;因其深度的工厂建造模拟、自由度极高的探索以及精美的图形表现而受到许多玩家的喜爱。它允许玩家在一个开放的世界中规划并建立复杂的生产…

02-JDK新特性-Lambda表达式

JDK新特性 Lambda表达式 什么是Lambda表达式 Lambda表达式是一个匿名代码块&#xff0c;用于简单的传递一段代码片段。 Lambda表达式标准格式 格式&#xff1a;(形式参数) -> {代码块} 形式参数 如果有多个参数&#xff0c;参数只见用逗号隔开&#xff1b;如果没有&…

leetcode90. 子集 II

去重逻辑&#xff1a; 关键是画出递归树&#xff01;当我们即将进入第二个2的递归的时候&#xff0c;发现isVisit数组是100&#xff0c;也就是说这俩重复的数是False&#xff0c;并且这俩在nums值相同&#xff0c;所以写出去重逻辑&#xff01; class Solution { public:vector…

Mock.js的基本使用

mock顾名思义&#xff0c;就是模拟的意思&#xff0c;它模拟什么呢&#xff1f;假设我们在开发的过程中&#xff0c;我们需要使用到接口&#xff0c;但是后端接口并没有完善&#xff0c;那么我们就可以使用到mock.js&#xff0c;它可以随机生成数据&#xff0c;拦截AJAX请求&am…

mysql执行脚本导入表和数据后中文注释乱码解决

本人在使用不同版本下进行操作时&#xff0c;就会出现中文乱码的问题。例如我本地安装mysql8&#xff0c;服务器安装的是mysql5&#xff0c;然后本地连接服务器的mysql后&#xff0c;执行SQL脚本之后发现中文全部乱码 使用工具查看&#xff0c;注释也都是乱码 解决方案 本地…

vue 视频添加水印

1.需求背景 其实腾讯云点播的api也支持视频水印&#xff0c;但是只有单个水印&#xff0c;大概效果是这样子的&#xff0c;不满足我们的需求&#xff0c;我们的需求是需要视频中都是水印。 腾讯云点播水印 项目需求的水印&#xff08;主要是防录屏,最后的实现效果是这样&…

AcWing 4405. 统计子矩阵:做题笔记

目录 暴力思路 代码 前缀和双指针 代码 解释 推荐博客 这道题的主要思路就是枚举所有的子矩阵&#xff0c;判断符合条件的子矩阵的个数。 暴力思路 我服了&#xff0c;其实我最开始没有想到 &#xff1a;枚举所有的子矩阵 这样一个很有总结性的要点。 我是想着哦我先…

重读Java设计模式: 深入探讨建造者模式,构建复杂对象的优雅解决方案

引言 在软件开发中&#xff0c;有时需要构建具有复杂结构的对象&#xff0c;如果直接使用构造函数或者 setter 方法逐个设置对象的属性&#xff0c;会导致代码变得冗长、难以维护&#xff0c;并且容易出错。为了解决这个问题&#xff0c;我们可以使用建造者模式。 一、建造者…

Jamba LLM模型:破解大型上下文窗口挑战的AI新星

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…