Linux中yum、vim和gcc
一、yum
CentOS/RHEL 系列使用 yum(RHEL 8+ 已逐步过渡到 dnf),Ubuntu/Debian 系列使用 apt。本文以 lrzsz(文件传输工具)为例。
1. 查看软件包
# CentOS / RHEL
yum list | grep lrzsz
# 输出示例:lrzsz.x86_64 0.12.20-36.el7 @base
# Ubuntu / Debian
apt search lrzsz
apt show lrzsz # 查看详细信息
命名规范详解
以 lrzsz.x86_64 0.12.20-36.el7 @base 为例:
-
x86_64→ 64位系统包,i686为32位 -
el7→ 适用于 CentOS 7 / RHEL 7(el6则对应版本6) -
@base→ 软件源名称,类似“应用商店”标识
2. 安装软件
# CentOS
sudo yum install -y lrzsz
# Ubuntu
sudo apt install -y lrzsz
关键注意事项:
-
必须使用
sudo或 root 权限(向系统目录写入内容) -
一次只能运行一个
yum/apt任务,不能并发安装 -
确保网络畅通:可以通过
ping www.baidu.com验证 -
出现
complete或无报错即成功
3. 卸载软件
# CentOS
sudo yum remove [-y] lrzsz
# Ubuntu
sudo apt remove [-y] lrzsz # 保留配置文件
sudo apt purge [-y] lrzsz # 彻底删除(含配置)
4. 软件源(Repository)管理
软件源决定了你从哪个服务器下载包,类似手机的应用商店。
| 系统 | 标准源路径 | 扩展源路径 |
|---|---|---|
| CentOS | /etc/yum.repos.d/(如 CentOS-Base.repo) | epel.repo(需安装 epel-release) |
| Ubuntu | /etc/apt/sources.list | /etc/apt/sources.list.d/ |
安装扩展源示例(CentOS):
sudo yum install -y epel-release
云服务器通常已配置国内镜像源,无需手动调整。虚拟机用户建议更换为阿里云、清华源以提升速度。
二、vim
1. 三种核心模式
| 模式 | 说明 | 进入方式 |
|---|---|---|
| 正常模式(Normal) | 控制光标、删除、复制、粘贴 | 启动 Vim 后默认 |
| 插入模式(Insert) | 编辑文本,输入内容 | 按 i / a / o |
| 末行模式(Last Line) | 保存、退出、查找、设置行号 | 在正常模式按 : |
💡 Vim 共有 12 种模式(
:help vim-modes),但掌握以上三种即可覆盖日常操作。
2. 常用操作速查表(基于正常模式)
光标移动(推荐使用字母键)
| 按键 | 功能 |
|---|---|
h/j/k/l | 左/下/上/右 |
gg | 文件首行 |
G | 文件末行 |
^ / $ | 行首 / 行尾 |
w / b | 下一个单词开头 / 上一个单词开头 |
e | 下一个单词尾部 |
翻页与滚动
| 按键 | 功能 |
|---|---|
Ctrl+f | 向前翻一页 |
Ctrl+b | 向后翻一页 |
Ctrl+u | 向上滚动半页 |
Ctrl+d | 向下滚动半页 |
💡
Ctrl+u和Ctrl+d比Ctrl+f/Ctrl+b更精细,适合在不离开当前视线范围的情况下快速浏览上下文。
删除、复制、粘贴
| 按键 | 功能 |
|---|---|
x | 删除光标后一个字符 |
X | 删除光标前一个字符 |
dd | 删除整行,或剪切当行 |
yy | 复制整行 |
p | 粘贴 |
u | 撤销 |
Ctrl+r | 恢复撤销 |
| 按键 | 功能 |
|---|---|
# | 向前(上方)搜索光标所在的单词,并将光标移动到上一个匹配处 |
💡 对应的正向搜索是
*(向后 / 下方搜索)。#和*都不会改变文件内容,只用于快速定位。
n 在 Vim 中用于重复上一次搜索动作,方向与上次搜索相同。# 和 n 配合可以实现高效的单词浏览:
| 操作序列 | 功能 |
|---|---|
# | 从光标位置向前(上方)搜索当前单词,跳转到上一个匹配处 |
n | 继续向前搜索,跳转到更前一个匹配处(重复 # 的方向) |
N | 反向重复上一次搜索,即向后搜索(与 # 方向相反) |
🎯 实战技巧:先用
#跳到上一个匹配,然后连续按n可以一路向上浏览所有匹配。如果想向下浏览,可以先按*再按n。
替换操作
| 按键 | 功能 |
|---|---|
r | 替换光标所在的单个字符 |
R | 进入替换模式,连续替换字符,直到按 Esc 退出 |
💡
R相当于一种“覆盖式输入”,适合局部内容精确修改,比先删除再插入更高效。
进入插入模式的不同方式
| 按键 | 说明 |
|---|---|
i | 光标前插入 |
a | 光标后插入 |
o | 下一行插入 |
O | 上一行插入 |
3. n + 标识符 组合操作(高效重复执行)
Vim 中很多命令前可以加数字 n,表示重复执行 n 次。
| 组合 | 功能 |
|---|---|
5j | 光标向下移动 5 行 |
3w | 向右跳 3 个单词 |
7x | 删除光标后 7 个字符 |
4X | 删除光标前 4 个字符 |
2dd | 删除 2 行 |
3yy | 复制 3 行 |
5r- | 将光标后 5 个字符依次替换为 - |
2Rabc | 进入替换模式,替换 2 个字符为 ab(c 会继续替换后续) |
4Ctrl+d | 向下滚动 4 次半页(注意:该组合部分终端需按 4 次 Ctrl+d 或依靠 Vim 映射) |
⚠️
n + 操作符是 Vim 高效操作的核心之一,体现了“动词 + 数字 + 名词”的编辑语言思想。
4. 末行模式实用命令
4.1 基本操作
| 命令 | 作用 |
|---|---|
:w | 保存文件 |
:q | 退出 |
:wq / :x | 保存并退出 |
:q! | 强制退出(不保存) |
:set nu | 显示行号 |
:15 | 跳转到第15行 |
4.2 查找与替换
| 命令 | 作用 |
|---|---|
/keyword | 向下搜索关键词 |
?keyword | 向上搜索关键词 |
:noh | 取消高亮 |
:%s/old/new/g | 全文替换所有 old 为 new |
:%s/old/new/gc | 全文替换,每次确认 |
🔍
/和?的区别:前者向下搜索,后者向上搜索,配合n/N可继续查找。
% 符号详解
% 在末行模式中表示 整个文件范围,常用于全局替换或全局操作。
| 命令 | 说明 |
|---|---|
:%s/foo/bar/g | 将全文中所有 foo 替换为 bar |
:%y | 复制整个文件内容 |
:%d | 删除整个文件内容 |
:%!sort | 将整个文件内容传递给外部命令 sort 排序 |
💡
%相当于1,$的简写,表示从第一行到最后一行。例如:1,$s/foo/bar/g等价于:%s/foo/bar/g。
4.3 多文件与分屏操作
| 命令 | 作用 |
|---|---|
:e filename | 在当前窗口打开另一个文件 |
:sp filename | 水平分屏并打开文件(可省略文件名) |
:vs filename | 垂直分屏并打开文件(可省略文件名) |
Ctrl+w w | 在分屏之间切换光标 |
Ctrl+w h/j/k/l | 向左/下/上/右切换分屏 |
Ctrl+w q | 关闭当前分屏 |
:q | 关闭当前分屏(同上) |
💡
:vs是:vsplit的简写,:sp是:split的简写。分屏后可以同时查看或编辑多个文件,极大提升效率。
分屏示例流程:
vim file1.c
:vs file2.c " 垂直分屏打开 file2.c
:sp file3.c " 水平分屏打开 file3.c(在左侧或当前分屏中)
Ctrl+w w " 切换到下一个分屏
Ctrl+w h " 切换到左侧分屏
:q " 关闭当前分屏
三、gcc/g++
1. GCC 编译四步骤
GCC 编译过程分为四个阶段,每一步都可以通过选项显式控制:
| 阶段 | 命令示例 | 说明 |
|---|---|---|
| 预处理 | gcc -E hello.c -o hello.i | 宏展开、头文件包含、条件编译、去注释 |
| 编译 | gcc -S hello.i -o hello.s | 生成汇编代码,检查语法错误 |
| 汇编 | gcc -c hello.s -o hello.o | 生成机器可识别的目标文件 |
| 链接 | gcc hello.o -o hello | 链接库与目标文件,生成可执行程序 |
💡 小提示:
-o指定输出文件;.i、.s、.o分别是预处理、汇编、目标文件的常见后缀。
2. 静态链接 vs 动态链接
| 类型 | 特点 | 优点 | 缺点 |
|---|---|---|---|
| 静态链接 | 将所有依赖代码复制到最终程序 | 独立运行,启动快 | 文件大,更新需重新编译 |
| 动态链接 | 运行时加载共享库(如 .so) | 节省磁盘和内存,更新方便 | 依赖系统存在对应库 |
📦 示例:多个程序调用
printf(),静态链接会各自包含一份printf.o,动态链接则共享同一份库。
3. 静态库与动态库
-
静态库(
.a):编译时嵌入程序,文件大,独立运行。 -
动态库(
.so):运行时加载,文件小,需确保环境有对应库。
🪟 Windows 下为
.dll(动态)和.lib(静态)。
4. 常用 GCC 选项一览
| 选项 | 作用 |
|---|---|
-E | 仅预处理 |
-S | 生成汇编代码 |
-c | 生成目标文件(不链接) |
-o | 指定输出文件 |
-static | 强制静态链接 |
-shared | 生成动态库 |
-g | 加入调试信息(GDB 用) |
-O0 ~ -O3 | 优化级别(-Os 优化大小) |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)