
往期《Linux系统编程》回顾:/------------ 入门基础 ------------/ 【Linux的前世今生】 【Linux的环境搭建】 【Linux基础 理论+命令】(上) 【Linux基础 理论+命令】(下) 【权限管理】
hi ~,小伙伴们大家好啊!明天是重阳节了,嗯o( ̄▽ ̄)o没什么事情,只是想拿明天记录一下今天要开启Linux系统编程新的一章了。 今天要重点介绍的内容有两大块: 【软件包管理器 + 代码编辑器】 (❤️ ω ❤️)
简单跟大家剧透下:
软件包管理器:能帮咱们快速搞定 Linux 系统中各类软件的安装、更新与卸载,不用再手动折腾依赖问题(~o ̄3 ̄)~代码编辑器:则是咱们写代码的 “主战场”,选对工具能让敲代码的过程又快又顺畅~( ̄y▽, ̄)╭接下来就一起解锁这两个实用工具吧!ψ(`∇´)ψ
在 Linux 系统中
安装软件,一种常规方法是:先下载程序的源代码,之后对其进行编译,从而得到可执行程序。 不过这种方式比较繁琐,为了方便安装软件:
yum、apt 等),便捷地从服务器获取这些编译好的软件包,直接进行安装,无需再手动编译源代码,同时软件包管理器还能自动处理软件的依赖关系等

软件包:本质是为实现特定功能、经过打包整合的一组相关文件的集合,目的是简化软件的分发、安装、配置和维护流程。
软件包管理器:是 Linux 系统中用于自动化管理软件包的工具。
安装、卸载、更新、查询等操作简单说:它就像手机里的 “应用商店”—— 你不用自己找安装包、解压缩、配置环境,只需输入命令,它就会帮你完成从下载到安装的全过程。

常见的软件包管理器及适用系统:
yum(Yellow dog Updater, Modified)
适用于 RedHat、CentOS、Fedora 等系统,命令示例:
yum install 软件名 # 安装软件
yum remove 软件名 # 卸载软件
yum update 软件名 # 更新软件apt(Advanced Package Tool)
适用于 Ubuntu、Debian 等系统,命令示例:
apt install 软件名 # 安装软件
apt remove 软件名 # 卸载软件
apt upgrade 软件名 # 更新软件这些工具的核心作用是降低软件管理的复杂度,让用户无需关注软件的底层依赖和安装细节,只需通过简单命令就能完成操作。
镜像(Mirror):是指对官方软件仓库的 “副本”。
简单来说:镜像就像 “备份的软件源服务器”,和官方源的内容完全一致,只是部署的位置不同,方便用户更高效地获取软件。

软件包获取流程解析: 我们使用的 Linux 系统内部,会预先内置官方的软件源链接(例如:CentOS 对应的
www.centos.org相关源地址) 当我们在系统中使用yum(CentOS 等系统常用)或apt(Ubuntu 等系统常用)这类软件包管理器时,它会通过这些内置链接,知道从哪里去下载软件。
www.centos.org、www.ubuntu.org 等)会收集这些软件包,整理到软件仓库中
yum、apt 等)也能适配这种链接的更改,从新的镜像源获取软件简单来说整个流程就是:开发者提供软件 → 社区整理成软件包并制作镜像 → Linux 系统内置官方源链接,软件包管理器通过它获取软件,也支持用户切换更优的镜像源来下载软件。

以下是⼀些国内Linux软件安装源的官方链接,具体如下:
yum和apt是 Linux 系统中最常用的两款包管理器,分别适用于不同发行版:
总结: 两者核心功能一致(安装、卸载、更新等),但命令细节有差异:
yum 无需手动刷新索引,apt 必须先 update 再 upgradeyum remove 与 apt remove 行为类似,apt purge 更彻底yum/apt search 关键词 # 搜索含关键词的软件包
yum/apt info 软件名 # 查看软件包详细信息(版本、描述等)
yum/apt list installed # 列出所有已安装的软件包
yum/apt list available # 列出仓库中可安装的软件包一、 yum/apt search 关键词 # 搜索含关键词的软件包

二、yum/apt info 软件名 # 查看软件包详细信息(版本、描述等)

通过
yum list命令能够列示出当前系统中存在的所有软件包。 由于软件包的数量可能极多,所以我们需要借助grep命令,只筛选出我们关注的软件包。 三、yum/apt list installed # 列出所有已安装的软件包
四、yum/apt list available # 列出仓库中可安装的软件包

sudo yum/apt install 软件名 # 安装指定软件
sudo yum/apt install -y 软件名 # 自动确认安装(无需手动输入 y)一、yum/apt install 软件名 # 安装指定软件
yum 或 apt 时,它们会自动检索需要下载的软件包,此时输入 “y” 即可确认安装二、yum/apt install -y 软件名 # 自动确认安装(无需手动输入 y) 注意事项:
sudo 命令获取权限,或者切换到 root 用户账户才能完成操作yum 和 apt 安装软件时,同一时间只能安装一个,如果在 yum 或 apt 安装某个软件的过程中,又尝试用它们安装另一个软件,yum 或 apt 会报错在 Linux 系统中,有不少既有趣又能帮助我们更便捷操作的命令,以下为你介绍一些:
1. cmatrix
sudo yum/apt install cmatrixcmatrix 即可启动,按 Ctrl + C 退出
2. cowsay
sudo apt install cowsaycowsay "你好呀,Linux",还能通过 -f 参数指定动物形象,比如 cowsay -f tux "我是企鹅"(tux 是企鹅形象)
3. fortune
sudo apt install fortunefortune 即可
root@VM-16-7-ubuntu:~# fortune
你会通过投机或彩票获得钱财。
root@VM-16-7-ubuntu:~# fortune
《飘》精简版(商标)
—— 玛格丽特·米切尔
女人只爱她得不到的男人,而南方(地区)总被贬得一文不值。
《麦琪的礼物》精简版(商标)
—— O·亨利
一对夫妻忘了登记他们想要的礼物。
《老人与海》精简版(商标)
—— 欧内斯特·海明威
一位老人出海钓鱼,但运气不太好。
root@VM-16-7-ubuntu:~# 4. figlet
sudo apt install figletfiglet Hello Linux,会输出由 ASCII 字符组成的 “Hello Linux” 大型艺术字
5. lolcat
sudo apt install lolcatecho "彩虹文字" | lolcat,就能看到带彩虹色的 “彩虹文字” 输出
6. sl
sl(把 ls 打错了),会有一列火车从终端屏幕上驶过,是一个有趣的小彩蛋类命令,也能通过主动安装后使用sudo apt install slsl 即可看到火车驶过的效果

yum/apt remove 软件名 # 卸载软件(保留配置文件)
yum erase 软件名 # 彻底卸载(删除配置文件)
apt purge 软件名 # 彻底卸载(删除配置文件)yum/apt remove 软件名 # 卸载软件(保留配置文件)

yum update # 更新系统所有软件包
yum update 软件名 # 仅更新指定软件
/*--------------------------------------------------------*/
apt update # 刷新软件源索引(必须先执行)
apt upgrade # 更新所有已安装软件(不删除旧依赖)
apt full-upgrade # 智能更新(可能删除冲突的旧包)
安装源:指的是软件包的存储位置 ,是软件包获取和下载的来源
安装源的类型
apt 命令从官方源安装,确保软件能稳定运行在 Ubuntu 系统上安装源的作用
apt install 、CentOS 中的 yum install)时,包管理器会从配置好的安装源查找并下载对应的软件包及其依赖项,从而完成软件安装。 apt install nginx 命令安装 Nginx 服务器时,apt 会从配置的软件源中获取 Nginx 软件包以及它所依赖的其他库文件apt upgrade、yum update)时,就能从安装源下载最新版本的软件包安装源的配置

.repo 文件来添加新的软件源地址sudo add-apt-repository ppa:user/ppa-name 命令sudo apt update 更新源索引
Vim(全称 Vi IMproved):是一款在 Linux、Unix 及类 Unix 系统(如:Ubuntu、CentOS)中广泛使用的 命令行文本编辑器
Vi 的增强版本,凭借高效、轻量、可定制性强的特点,成为开发者、系统管理员处理代码、配置文件(如:软件源配置文件、脚本文件)的核心工具之一vim 的核心特点 vim 与图形界面编辑器(如:记事本、VS Code)的最大区别在于 依赖键盘命令操作,无需频繁切换鼠标,熟练使用后能极大提升文本编辑效率,其核心特点包括:
~/.vimrc)自定义快捷键、界面样式、插件加载等,能根据个人习惯打造专属编辑环境vim 的 “模式化” 是其核心,新手需先理解不同模式的切换逻辑,否则可能出现 “按键盘没反应” 或 “乱输入” 的情况。
这里我们主要讲解 vim 的三种核心模式(实际上 vim 有很多模式,不过目前掌握这 3 种就可以了),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
Shift + ; 即可进入该模式:help vim-modes注:实际上,vim一共有 12 种模式:6 种基本模式和 6 种附加模式,常用核心模式有 3 种。
模式名称 | 核心作用 | 进入方式 | 退出 / 切换方式 |
|---|---|---|---|
命令模式 | 控制光标移动、执行 复制/粘贴/删除 等操作(默认启动模式) | Vim 启动后直接进入或从其他模式按 Esc 键返回 | 按 i/a/o 等键进入插入模式按 : 进入命令行模式 |
插入模式 | 直接输入文本(类似记事本的编辑状态) | 普通模式下按 i(光标前插入)、a(光标后插入)、o(新行插入)等 | 按 Esc 键返回普通模式 |
底行模式 | 执行保存、退出、搜索、替换等指令(需输入指令并按回车确认) | 普通模式下按 : 键(光标会跳到屏幕底部,等待输入指令) | 按 Esc 键返回普通模式 |


以 “编辑一个文本文件
test.txt” 为例,掌握以下步骤即可完成基础操作:
vim test.txt # 若文件存在则打开,不存在则新建
i 键(屏幕底部会显示 -- INSERT --),此时可像记事本一样输入、修改文字Esc 键返回 普通模式(底部 -- INSERT -- 消失)
:键进入命令行模式,输入以下指令并按回车:
w:仅保存文件(不退出)q:仅退出 vim(若文件未保存,会提示 “未保存,无法退出”)wq:保存并退出(最常用)q!:强制退出(不保存修改,慎用)
在 vim 的命令模式(也叫普通模式)下,有丰富的命令集用于高效操作文本,以下是一些常用的命令分类介绍:
一、光标移动类
h:光标向左移动一个字符l:光标向右移动一个字符j:光标向下移动一行k:光标向上移动一行
w:光标移动到下一个单词的开头(单词由字母、数字、下划线组成,遇到标点符号会停止)b:光标移动到当前单词或上一个单词的开头e:光标移动到当前单词或下一个单词的结尾0:将光标移动到当前行的行首(绝对行首,不包括行首的空格,功能类似于home)^:将光标移动到当前行的第一个非空白字符处$:将光标移动到当前行的行尾(功能类似于end)G:将光标移动到文件的最后一行nG:将光标移动到文件的第 n 行(n 为具体数字,例如:5G 表示移动到第 5 行)gg:将光标移动到文件的第一行二、文本删除类
x:删除光标所在位置的字符X:删除光标前一个位置的字符dw:删除从光标位置到当前单词结尾的内容(不包括下一个单词)db:删除从光标位置到当前单词开头的内容(包括光标所在字符)dd:删除光标所在的整行ndd:删除从光标所在行开始的 n 行(n 为具体数字,例如 3dd 表示删除 3 行)三、文本复制粘贴类
yy:复制光标所在的整行nyy:复制从光标所在行开始的 n 行(n 为具体数字,例如:2yy 表示复制 2 行)yw:复制从光标所在位置到当前单词结尾的内容(不包括下一个单词)p:在光标之后粘贴复制或删除的内容(如果复制或删除的是整行,则粘贴到下一行)P:在光标之前粘贴复制或删除的内容(如果复制或删除的是整行,则粘贴到上一行)四、文本修改类
r:替换光标所在位置的字符,输入一个新字符后完成替换,然后回到命令模式R:进入连续替换模式,此时可以不断输入新字符来替换光标所在位置及之后的字符,按 Esc 键退出该模式cw:删除从光标所在的位置到当前单词结尾的内容,并进入插入模式,可输入新内容cc:删除光标所在的整行,并进入插入模式五、撤销重做类
u,撤销上一次的操作(可以连续使用多次撤销多步操作)Ctrl + r,恢复被撤销的操作
六、其他的命令
i:在光标当前位置插入文本,进入插入模式
I:在光标所在行的行首插入文本,进入插入模式(如果行首有空格,会跳过空格到第一个非空白字符处插入)
a:在光标后一个位置插入文本,进入插入模式
A:在光标所在行的行尾插入文本,进入插入模式
o:在光标所在行的下方新建一行,并进入插入模式
O:在光标所在行的上方新建一行,并进入插入模式
v:进入字符可视化模式,通过移动光标可以选中字符V:进入行可视化模式,通过移动光标可以选中整行Ctrl + v:进入块可视化模式,可以选中矩形区域的文本,常用于批量操作多行文本的某一列vim的底行模式(也叫命令行模式)是通过在命令模式下按
:进入的(光标会跳到屏幕底部等待输入),主要用于执行文件操作、搜索替换、配置设置等指令,以下是常用命令集分类介绍:
一、文件操作的类
:w:保存当前文件(不退出 vim):q:退出 vim(若文件未保存,会提示错误):wq 或 :x:保存并退出(两者功能一致):q!:强制退出,不保存任何修改(忽略未保存提示):w 文件名:另存为指定文件(如::w new.txt 保存为 new.txt):e 文件名:在当前窗口打开指定文件(如::e /etc/hosts 打开系统 hosts 文件):new 文件名:新建水平分屏并打开指定文件(无文件名则新建空白文件):vnew 文件名:新建垂直分屏并打开指定文件
二、搜索与替换类
/关键词:从光标所在位置向下搜索 “关键词”(如:/error 搜索 error)?关键词:从光标所在位置向上搜索 “关键词”(如:?success 向上搜索 success)n:跳转到下一个匹配结果(配合 / 或 ? 使用)N:跳转到上一个匹配结果:noh:取消当前搜索的高亮显示(不影响后续搜索):s/旧内容/新内容:替换当前行第一个“旧内容” 为 “新内容”(如::s/hello/hi 替换当前行首个 hello 为 hi)
:s/旧内容/新内容/g:替换当前行所有“旧内容” 为 “新内容”(g 表示 global 全局)
:%s/旧内容/新内容:替换整个文件中每行第一个 “旧内容”(% 表示整个文件)
:%s/旧内容/新内容/g:替换整个文件中所有 “旧内容”(最常用的全局替换)
:%s/旧内容/新内容/gc:全局替换时逐处确认(c 表示 confirm,会提示是否替换)
三、行号与跳转类
:set nu 或 :set number:显示行号:set nonu 或 :set nonumber:隐藏行号:n:跳转到第 n 行(如::10 跳转到第 10 行,等价于命令模式的 10G):$:跳转到文件最后一行(等价于命令模式的 G)四、窗口与分屏类
:split 或 :sp:水平分屏(上下分割当前窗口):vsplit 或 :vsp:垂直分屏(左右分割当前窗口):close:关闭当前分屏窗口:only:关闭其他所有分屏,仅保留当前窗口Ctrl + w,再按方向键(h/j/k/l):在分屏间切换光标五、配置与辅助类
:set autoindent:开启自动缩进(输入换行时自动对齐):set expandtab:将 Tab 键转换为空格(默认 8 个空格,可配合 :set tabstop=4 设为 4 个):set hlsearch:开启搜索结果高亮(默认开启,:set nohlsearch 关闭):help 命令:查看指定命令的帮助文档(如::help w 查看保存命令说明):!命令:临时执行外部 Shell 命令(如::!ls 查看当前目录文件,执行完按回车返回 vim):set paste:进入粘贴模式(避免粘贴代码时格式错乱,结束后用 :set nopaste 关闭)底行模式的命令通常需要按回车确认执行,执行后自动回到命令模式。 熟练使用这些命令可以极大提升文件管理和文本处理的效率,尤其适合批量操作(如:全局替换、分屏编辑)
使用 vim的小技巧(珍藏版)
vim file +n:用 vim打开 file 文件并直接跳转到第 n 行(n 为具体行号)!command:在 vim 中执行外部 Shell 命令 command 要配置出独一无二的 vim,可以从 配置文件修改、插件安装与定制方面入手,以下是具体介绍:
一、配置文件修改
/etc/ 目录下,存在一个名为 vimrc 的文件,它是系统级的公共 vim 配置文件,对所有用户都有效,通过编辑这个文件,可以设置 vim的各种基础属性和偏好.vimrc /root 目录下,通常已经有一个 .vimrc 文件,若不存在,可自行创建su 用户名,若切换到当前登录用户对应的主目录,也可直接执行 cd ~),进入自己的主目录.vimrc 文件,执行 vim .vimrc 命令即可set number 或 set nu,就能在 vim 编辑界面显示行号,方便定位和查看代码行数
set ruler,在状态栏会实时显示光标所在的行号和列号,在处理大文件或进行精确编辑时很有用syntax on,开启语法高亮功能,vim会根据文件类型对代码进行不同颜色的显示,提高代码可读性set tabstop=4,将制表符(Tab 键)的宽度设置为 4 个空格,这是很多编程语言推荐的缩进宽度set expandtab,这样在按下 Tab 键时,vim 会自动插入相应数量的空格,而不是制表符,有助于保持代码格式在不同编辑器中的一致性set autoindent 或 set ai,使新输入的行自动和上一行保持相同的缩进,在编写代码或结构化文本时非常方便一、插件合集安装 虽然vim本身功能强大,但通过合理的配置和插件扩展,它可以变身成为一个完整的IDE。 这里为大家介绍的ma6174/vim仓库提供了一套经过精心调校的vim配置方案: GitHub 仓库的链接:ma6174/vim: vim配置文件和插件(不再维护)
(一)安装方法

(二)安装流程

温馨提示:如果使用的Linux是Centos7 x86_64,也可以尝试下面的这个“一键式vim环境安装包”,快速配置,一键上手。 VimForCpp: 快速将vim打造成c++ IDE