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

记录我自己零开始学习Linux。

目录

前言

[一、Linux 软件包管理器 yum](#一、Linux 软件包管理器 yum)

[1. 什么是软件包](#1. 什么是软件包)

[2. 如何安装软件](#2. 如何安装软件)

[3. 如何卸载软件](#3. 如何卸载软件)

二、Linux编辑器-vim使用

[1. vim 的核心模式](#1. vim 的核心模式)

[2. vim 基础使用流程(从打开到保存退出)](#2. vim 基础使用流程(从打开到保存退出))

[3. 高频实用操作(普通模式下)](#3. 高频实用操作(普通模式下))

[4. 实用小技巧](#4. 实用小技巧)

三、vim命令模式命令集

光标移动命令

删除命令

复制命令

替换命令

撤销上一次操作命令

跳至指定的行命令

更改命令

其他实用命令

四、vim底行模式命令集

列出行号

查找字符

保存文件

[离开 vim](#离开 vim)

[执行系统命令(不退出 vim)](#执行系统命令(不退出 vim))

分屏操作

查找替换

格式设置

多标签页操作

帮助查询

总结

前言

前面我们已经学习了 Linux 的基础指令,以及文件、目录权限的管理方式。接下来,我们将介绍 Linux 环境下的两款基础开发工具 ------ 包管理工具 yum,以及文本编辑器 vim;其中的核心要点,是要熟练掌握 vim 编辑器的各类操作命令,以便能顺畅地运用它开展操作。

一、Linux 软件包管理器 yum

1. 什么是软件包

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

但是这样太麻烦了, 于是有些人把⼀些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在⼀个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系.
yum(Yellow dog Updater, Modified)是Linux下非常常用的⼀种包管理器. 主要应用在Fedora,
RedHat, Centos等发行版上.
Ubuntu:主要使用apt(Advanced Package Tool)作为其包管理器。apt同样提供了自动解决依赖关系、下载和安装软件包的功能。

Linux 中常见的软件安装方式包括 CentOS/RHEL 系列的 yum 与 rpm 安装、Ubuntu/Debian 系列的 apt 与 dpkg 安装、支持自定义配置的源码编译安装,以及便捷的脚本一键安装。

2. 如何安装软件

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

sudo yum install -y lrzsz

3. 如何卸载软件

sudo yum remove lrzsz

二、Linux编辑器-vim使用

1. vim 的核心模式

vim 的核心特点是模式化操作,不同模式对应不同功能:
模式名称 进入方式(从命令 / 默认模式) 返回方式 核心用途

命令 / 默认模式 vim 启动后默认进入 执行命令后自动回普通模式 移动光标、执行复制 / 删除 / 粘贴等快捷操作,是其他模式的中转核心
替换模式 按Shift+R(即R) 按Esc键 直接替换光标所在位置的字符(输入新字符会覆盖原有字符)
插入模式 按i/a/o(不同位置插入) 按Esc键 常规文本输入与编辑(类似普通文本编辑器的编辑状态)
Visual Block 模式 按Ctrl+v 按Esc键 实现列级文本选择(如批量给多行代码添加注释、批量修改列内容)
底行模式 按Shift+;(即输入:) 按Esc键 执行文件操作(保存、退出)、查找替换、vim 参数设置(如:wq保存退出)

2. vim 基础使用流程(从打开到保存退出)

复制代码
# 1. 打开/新建文件(普通模式)
vim test.txt  # 打开test.txt,不存在则新建

# 2. 进入插入模式开始编辑
i  # 最常用:在光标当前位置前插入文字
# 可选:a(光标后插入)、o(光标下新建一行插入)

# 3. 回到普通模式(关键)
Esc  # 按一次即可,不确定可以多按几次

# 4. 保存/退出(命令行模式)
:w        # 仅保存文件
:q        # 仅退出(文件未修改时)
:wq       # 保存并退出(最常用)
:q!       # 强制退出(放弃所有修改)
:w new.txt # 另存为new.txt

3. 高频实用操作(普通模式下)

普通模式是 vim 的效率核心,记住这些快捷键能大幅提升编辑速度:
  1. 光标移动(不用方向键,更高效)
    基础移动:k(上)、j(下)、h(左)、l(右)
    行级移动:0(行首)、$(行尾)
    文档级移动:gg(文档开头)、G(文档结尾)、数字+G(跳指定行,如10G跳第 10 行)
    翻页:Ctrl+f(下翻一页)、Ctrl+b(上翻一页)
  2. 文本编辑(复制 / 删除 / 撤销)
    删除:
    x:删除光标所在字符
    dd:删除整行(最常用)
    3dd:删除光标开始的 3 行(n+dd 删除 n 行)
    d$:删除光标到行尾的内容
    复制粘贴:
    yy:复制整行(最常用)
    5yy:复制光标开始的 5 行(n+yy 复制 n 行)
    p:粘贴到光标下一行,P(大写)粘贴到光标上一行
    撤销 / 重做:
    u:撤销上一步操作
    Ctrl+r:重做被撤销的操作
  3. 查找替换(命令行模式)
    查找:/关键词(如/error),按n找下一个,N找上一个;?关键词(反向查找)
    替换:
    单行替换::s/旧内容/新内容(替换当前行第一个匹配)
    单行全替换::s/旧内容/新内容/g(g=global,全局)
    全文替换::%s/旧内容/新内容/g(最常用)
    全文替换并确认::%s/旧内容/新内容/gc(c=confirm,每个匹配都确认)

4. 实用小技巧

显示 / 隐藏行号: :set nu(显示)、:set nonu(隐藏),想永久显示行号可编辑~/.vimrc,添加set nu并保存。

快速保存退出:普通模式下按ZZ(等价于:wq)。
缩进:>>(向右缩进一行)、<<(向左缩进一行),3>>缩进 3 行。
替换字符大小写:普通模式下按~(切换光标所在字符的大小写)。 在任何模式下想要回命令模式,直接无脑 [Esc]。

三、vim命令模式命令集

光标移动命令

vim可以直接用键盘上的按键 来上下左右移动,但正规的vim是用小写英文字母 [h],[j],[k],[l],分别控制光标左,下,上,右移一格
[shift+g = G]:定位到文本的末尾

n+shift+g\]:定位到文本的第 n 行 \[gg\]:定位到文本的最开始 \[$\]:移动到光标所在行的 "行尾" -\[ \^\]:移动到光标所在行的 "行首" \[w\]:以单词为单位,向后跳 \[e\] :以单词为单位,向前跳 \[ctrl + b\]:屏幕往 "后" 移动一页 \[ctrl + f\] :屏幕往 "前" 移动一页 \[f + 字符\]:快速跳转到当前行的下一个指定字符处(按;跳至下一个匹配,按,跳至上一个匹配) \[F + 字符\]:跳转到当前行的上一个指定字符处 \[t + 字符\]:跳转到当前行下一个指定字符的前一格位置 \[T + 字符\]:跳转到当前行上一个指定字符的后一格位置 \[zz\]:将光标所在行居中显示在屏幕 \[%\]:跳转到光标所在括号(如()、{})的匹配括号处 #### 删除命令 ##### \[x\]:每按一次,删除光标所在位置的一个字符 \[n+x\]:删除 n 个字符。例如,\[6x\] 表示删除光标所在位置的 "后面(包含自己在内)"6 个字符 \[dd\]:删除光标所在行 \[n+dd\]:从光标所在行开始删除 n 行 \[X\]:大写的 X,每按一次,删除光标所在位置的 "前面" 一个字符 \[n+X\]:例如,\[20X\] 表示删除光标所在位置的 "前面" 20 个字符 #### 复制命令 ##### \[yy\]:复制光标所在行到缓冲区 \[n+yy\]:复制 n 行。例如,「6yy」表示拷贝从光标所在的该行 "往下数" 6 行文字。 \[p\]:将缓冲区内的字符贴到光标所在位置。注意:所有与 "y" 有关的复制命令都必须与 "p" 配合才能完成复制与粘贴功能。 \[yw\]:将光标所在之处到字尾的字符复制到缓冲区中。 \[n+yw\]:复制 n 个字到缓冲区 \[Y\]:复制光标所在行到缓冲区(等价于yy) \[P\]:将缓冲区内的字符贴到光标所在行的上一行 \[y$\]:复制光标所在位置到当前行尾的内容 \[y\^\]:复制光标所在位置到当前行首的内容 \[v/V\]:进入可视化选择模式(v为字符级选择,V为行级选择),选中后按y可复制选中内容 #### 替换命令 ##### \[r\]:替换光标所在处的字符。 \[R\]:批量替换。替换光标所到之处的字符,直到按下 \[ESC\] 键为止。 \[\~\]:切换光标所在处字符的大小写 \[gUw\]:将光标所在的单词全部转换为大写 \[guw\]:将光标所在的单词全部转换为小写 #### 撤销上一次操作命令 ##### \[u\]:如果您误执行一个命令,可以马上按下 \[u\],回到上一个操作。按多次 "u" 可以执行多次回复。 \[ctrl + r\] :撤销的恢复 批量加 #注释:ctrl+v --\> hjkl (选中注释列) --\> shift+i --\> # --\> Esc(适用于 shell/Python 等) 批量取消 #注释:ctrl+v --\> hjkl (选中 #列) --\> d 批量注释指定行:命令模式按:,输入\[n1,n2s/\^/\\/\\//g\](给 n1 到 n2 行加 // 注释) 批量取消指定行注释:命令模式按:,输入\[n1,n2s/\^\\/\\///g\](取消 n1 到 n2 行的 // 注释) #### 跳至指定的行命令 ##### \[ctrl + g\]:列出光标所在行的行号。 \[n+G\]:例如,\[15G\],表示移动光标至文章的第 15 行行首。 \[ctrl + g\]:列出光标所在行的行号、文件总行数及光标位置占比 #### 更改命令 ##### cw\]:更改光标所在处的字到字尾处 \[c+n+w\]:例如,\[c3w\] 表示更改 3 个字 \[cc\]:删除光标所在行并进入插入模式\[C\]:删除光标所在位置到当前行尾的内容并进入插入模式\[s\]:删除光标所在处的字符并进入插入模式\[S\]:等价于`cc`,删除光标所在行并进入插入模式 #### 其他实用命令 ##### \[.\]:重复执行上一次的编辑命令 \[J\]:合并当前行与下一行(删除两行之间的换行符) \[ZZ\]:保存当前文件并退出 vim(等价于:wq) \[ZQ\]:强制退出 vim 且不保存修改(等价于:q!)

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

列出行号

[set nu]:设置显示行号(新手编辑代码 / 文本必备)

set nonu\]:取消显示行号 #### 查找字符 ##### \[/ + 关键字\]:先按 \[/\] 键,再输入想找的字符,按 \[n\] 往后找下一个匹配的关键字,按 \[N\] 往前找 \[? + 关键字\]:先按 \[?\] 键,再输入想找的字符,按 \[n\] 往前找下一个匹配的关键字,按 \[N\] 往后找 \[set hlsearch\]:开启查找结果高亮显示 \[set nohlsearch\]:关闭查找结果高亮显示 \[set ic\]:查找时忽略大小写(比如搜 Name 和 name 都能匹配) \[set noic\]:查找时区分大小写 #### 保存文件 ##### \[w\]:在冒号后输入 \[w\],保存当前文件的修改(只保存不退出) \[w!\]:强制保存文件(适用于文件是只读权限的情况) \[w 新文件名\]:将当前文件另存为新文件(比如 \[w test_bak.txt\],把内容存成 test_bak.txt) \[e!\]:放弃当前所有修改,恢复文件到上次保存的状态 #### 离开 vim ##### \[q\]:按 \[q\] 退出 vim,仅文件没修改时能退出 \[q!\]:在 \[q\] 后加 \[!\],强制退出 vim,放弃所有未保存的修改 \[wq\]:搭配 \[w\] 和 \[q\] 使用,保存修改后退出 vim(最常用) \[wq!\]:强制保存并退出 vim(针对只读文件) \[x\]:等价于 \[wq\],仅文件有修改时才保存并退出,更智能 #### 执行系统命令(不退出 vim) ##### \[!ls\]、\[!ll\]、\[!pwd\]:在冒号后输入 \[!+ 命令\],直接执行系统命令(比如 \[!ls\] 看当前目录文件,\[!pwd\] 看当前路径) \[!gcc code.c -o hello\]:不退出 vim,直接编译 C 代码(生成 hello 可执行文件) \[!./hello\]:不退出 vim,直接执行编译好的可执行文件 \[r !date\]:将系统命令执行结果插入到光标所在行(比如 \[r !date\] 插入当前时间) #### 分屏操作 ##### \[vs + 文件名\]:垂直分屏并打开指定文件(比如 \[vs config.conf\],分屏打开配置文件) \[sp + 文件名\]:水平分屏并打开指定文件(比如 \[sp test.txt\],上下分屏) \[ctrl + ww\]:分屏后,按 \[ctrl+ww\] 切换光标到另一个屏幕 \[ctrl + w + 上下键\]:水平分屏时,切换上下屏幕 \[ctrl + w + 左右键\]:垂直分屏时,切换左右屏幕 #### 查找替换 ##### \[s / 旧内容 / 新内容\]:替换当前行第一个匹配的旧内容为新内容(比如 \[s/error/warning\]) \[s / 旧内容 / 新内容 /g\]:替换当前行所有匹配的旧内容(g 表示全局) \[n1,n2s / 旧 / 新 /g\]:替换 n1 到 n2 行所有匹配的内容(比如 \[10,20s///g\] 删除 10-20 行所有空格) \[% s / 旧 / 新 /g\]:替换全文所有匹配的内容(最常用,比如 \[% s/debug/info/g\]) \[% s / 旧 / 新 /gc\]:全文替换但逐个确认(按 y 确认替换,n 跳过,c 表示确认) \[% s / 旧 / 新 /gi\]:全文替换且忽略大小写(i 表示忽略大小写) 行操作(删除 / 复制 / 移动) \[n1,n2d\]:删除 n1 到 n2 行(比如 \[5,8d\] 删除 5-8 行) \[n1,n2y\]:复制 n1 到 n2 行(比如 \[10,15y\] 复制 10-15 行) \[n1,n2m n3\]:将 n1 到 n2 行移动到 n3 行之后(比如 \[3,5m 10\] 把 3-5 行移到 10 行后) \[n\]:跳转到第 n 行(比如 \[100\] 直接跳到第 100 行) #### 格式设置 ##### \[set ai\]:开启自动缩进(编程时换行自动对齐) \[set noai\]:关闭自动缩进 \[set shiftwidth=4\]:设置缩进宽度为 4 个字符(Python/Java 常用) \[set tabstop=4\]:设置 Tab 键对应 4 个空格(避免 Tab 和空格混用) \[set list\]:显示不可见字符(空格显示为・,换行显示为 $,排查格式问题) #### 多标签页操作 ##### \[tabnew 文件名\]:新建标签页并打开指定文件(比如 \[tabnew app.py\]) \[tabn\]:切换到下一个标签页 \[tabp\]:切换到上一个标签页 \[tabclose\]:关闭当前标签页 #### 帮助查询 ##### \[help + 命令\]:查看指定命令的帮助文档(比如 \[help w\] 查看保存命令的说明) #### 总结 ##### 底行模式核心高频操作是保存退出(w/wq/q!)、全文替换(% s / 旧 / 新 /g \[ci\])、分屏 / 标签页(vs/sp/tabnew); 替换命令的 g(全局)、c(确认)、i(忽略大小写)可组合使用,适配不同替换场景; 执行系统命令加 \[!\] 前缀,插入命令结果用 \[r!\],无需退出 vim 就能完成多操作。

相关推荐
切糕师学AI2 小时前
GDB: GNU 调试器
服务器·gnu
JiMoKuangXiangQu2 小时前
Linux eBPF 错误:invalid bpf_context access
linux·ebpf
Sylvan Ding2 小时前
Cursor配置迁移到VSCode
ide·vscode·编辑器·cursor·配置迁移
kaoa0002 小时前
Linux入门攻坚——61、tomcat负载均衡集群-LB Cluster
linux·tomcat·负载均衡
洋葱 ☠2 小时前
极简部署linux免费ssl证书Let‘s Encrypt,自动续签,nginx/apache都可以,域名指向服务器即可,无需项目
linux·nginx·ssl
星哥说事2 小时前
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台
运维·服务器·docker
西门吹牛2 小时前
openwrt学习笔记
linux·笔记·学习
Mike_6662 小时前
Linux (Ubuntu) Jetson AArch64 架构 JetPack6.2 CUDA+CUDNN+PyTorch 安装踩坑经历
linux·pytorch·ubuntu
卖冰糖葫芦的大叔2 小时前
解决vscode与cursor在终端中无法使用code和cursor命令的问题
ide·vscode·编辑器