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 就能完成多操作。

相关推荐
爱学习的小囧1 分钟前
VMware ESXi 6.7U3v 新版特性、驱动集成教程和资源包、部署教程及高频问答详情
运维·服务器·虚拟化·esxi6.7·esxi蟹卡驱动
小疙瘩6 分钟前
只是记录自己发布若依分离系统到linux过程中遇到的问题
linux·运维·服务器
dldw77743 分钟前
IE无法正常登录windows2000server的FTP服务器
运维·服务器·网络
我是伪码农1 小时前
外卖餐具智能推荐
linux·服务器·前端
汤愈韬2 小时前
下一代防火墙通用原理
运维·服务器·网络·security
皮皮林5512 小时前
强烈建议大家使用 Linux 做开发?
linux
IMPYLH2 小时前
Linux 的 od 命令
linux·运维·服务器·bash
Kk.08023 小时前
Linux(十一)fork实例练习、文件操作示例及相关面试题目分享
linux·运维·算法
数据雕塑家4 小时前
Linux下大文件切割与合并实战:解决FAT32文件系统传输限制
linux·运维·服务器
IMPYLH4 小时前
Linux 的 nice 命令
linux·运维·服务器·bash