Linux Vi/Vim使用 ⑥
掌握 CentOS 7 下的 Vi/Vim 编辑器:从安装到精通
在 CentOS 7 系统的日常运维、编程开发以及各类文本处理场景中,Vi/Vim 编辑器都是不可或缺的得力工具。它以轻量、高效、功能强大著称,虽然初次上手有一定学习门槛,但掌握之后便能大幅提升工作效率。今天,咱们就从安装讲起,一步步深入 Vi/Vim 的奇妙世界,借助丰富的代码案例,让你轻松上手。
一、安装 Vim 编辑器
CentOS 7 默认预装了基础版的 Vi,但为了享受更多高级功能,我们通常会选择安装功能更完备的 Vim。安装过程非常简单,利用系统自带的软件包管理工具 yum 即可快速搞定。
打开终端,输入以下命令:
yum install vim -y
这里,yum 是 CentOS 7 系统中强大的包管理器,负责软件的安装、更新与卸载;install 是 yum 命令的一个关键子命令,明确告知系统要执行安装操作;vim 自然就是我们的目标软件包名称;-y 参数很贴心,它的作用是自动应答所有安装过程中的确认提示,让安装一气呵成,无需手动逐个确认,大大节省时间。
安装完成后,输入 vim --version 来验证安装情况,你会看到类似如下的版本信息输出:
VIM - Vi IMproved 7.4.160 (2016 Aug 10, compiled Aug 2 2017 03:49:32)
Included patches: 1-160
Modified by <bugzilla@redhat.com>
Compiled by <bugzilla@redhat.com>
...
看到这些信息,就说明 Vim 已经成功入驻你的系统啦。
以下是为你补充了 vi 和 vim 操作参数表格的内容,方便更清晰对比和查看相关操作:
vi 和 vim 常用操作参数表格
| 操作分类 | 操作描述 | vi 命令格式示例 | vim 命令格式示例 | 说明 |
|---|---|---|---|---|
| 启动编辑器 | 打开已有文件 | vi /etc/hosts | vim /etc/hosts | /etc/hosts 可替换为实际要编辑的文件路径,vi 为基础版,vim 功能更丰富 |
| 新建文件 | vi new_file.txt | vim new_file.txt | 创建名为 new_file.txt 的新空白文件,按需替换文件名 | |
| 退出编辑器 | 正常保存并退出 | :wq(先按 Esc 进入命令模式后输入) | :wq(先按 Esc 进入命令模式后输入) | 保存文件内容并关闭编辑器 |
| 不保存直接退出 | :q!(先按 Esc 进入命令模式后输入) | :q!(先按 Esc 进入命令模式后输入) | 强制忽略未保存修改,直接关闭编辑器 | |
| 只保存不退出 | :w(先按 Esc 进入命令模式后输入) | :w(先按 Esc 进入命令模式后输入) | 仅保存当前文件内容,可继续编辑 | |
| 光标移动(命令模式) | 移到文件开头 | gg | gg | 快速将光标定位到文件首行开头位置 |
| 移到文件末尾 | G | G | 快速将光标定位到文件最后一行开头位置 | |
移到指定行(如第 n 行) | nG | nG | 将光标定位到指定的第 n 行开头,n 为具体行数数字 | |
| 向左移动光标 | h | h | 按一次光标向左移动一个字符位置 | |
| 向下移动光标 | j | j | 按一次光标向下移动一个字符位置 | |
| 向上移动光标 | k | k | 按一次光标向上移动一个字符位置 | |
| 向右移动光标 | l | l | 按一次光标向右移动一个字符位置 | |
| 文本删除(命令模式) | 删除单个字符 | x | x | 将光标移到要删除的字符上,按下此键删除该字符 |
| 删除整行 | dd | dd | 将光标移到要删除的行,按下此键删除整行内容 | |
| 文本复制粘贴(命令模式) | 复制一行 | yy | yy | 将光标移到要复制的行,按下此键复制该行内容 |
| 粘贴 | p | p | 将光标移到目标粘贴位置,按下此键粘贴已复制的内容 | |
| 插入模式进入(命令模式切换) | 在光标当前位置插入文字 | 按 i 键 | 按 i 键 | 进入插入模式,可在光标所在位置开始输入文字,按 Esc 键返回命令模式 |
| 在光标后面位置插入文字 | 按 a 键 | 按 a 键 | 进入插入模式,在光标后开始输入文字,按 Esc 键返回命令模式 | |
| 在当前行下方新开一行并插入文字 | 按 o 键 | 按 o 键 | 进入插入模式,在当前行下方新开一行用于输入文字,按 Esc 键返回命令模式 | |
| 末行模式操作(命令模式切换) | 保存并退出 | :wq | :wq | 先按 : 键进入末行模式,再输入此命令保存并退出编辑器 |
| 查找替换(全局) | :%s/要替换的内容/替换后的内容/g | :%s/要替换的内容/替换后的内容/g | 先按 : 键进入末行模式,如将文件内所有 the 替换成 a 可输入 :%s/the/a/g,回车执行替换操作 | |
| 查找替换(指定行) | :n s/要替换的内容/替换后的内容/g(n 为行数) | :n s/要替换的内容/替换后的内容/g(n 为行数) | 先按 : 键进入末行模式,如替换第 3 行的 the 可输入 :3s/the/a/g,回车执行替换操作 |
通过这个表格,可以更直观地对比 vi 和 vim 在相同操作类型下的命令格式,有助于更快速准确地在不同场景下使用它们进行文本编辑操作。同时结合前面文档中详细的文字描述和案例讲解,相信能更好地掌握这两个编辑器的使用方法哦。
希望这份补充内容符合你的需求,要是还有其他想添加或者修改的地方,可以继续向我提问呀。
二、Vi/Vim 编辑器的启动与退出
(一)启动编辑器
要打开一个已有的文件,比如编辑 /etc/hosts 文件(这可是系统网络配置的关键文件,修改时要倍加小心),在终端敲下:
vim /etc/hosts
或者
vi /etc/hosts
要是想用基础版的 Vi,把 vim 换成 vi 就行。文件瞬间在编辑器窗口中打开,光标稳稳落在首行开头,等待你大展拳脚。
要是想新建一个文件,例如记录日常学习笔记,创建一个名为 learning_notes.txt 的文件,只需输入:
vim learning_notes.txt
或者
vi learning_notes.txt
编辑器马上新建一个空白文档,准备好迎接你的文字。
(二)退出编辑器
退出环节有好几招,各有各的妙处。
正常保存并退出:精心编辑完 learning_notes.txt,想保存成果并潇洒离场,先按下键盘上的 Esc 键,确保进入命令模式,接着输入 :wq 然后回车。这里的 :w 代表 write,意思是保存文件内容;q 表示 quit,就是退出编辑器,二者联手实现完美收官。操作示例如下:
# 编辑完毕,按下 Esc 键
: wq
# 回车,文件保存,编辑器关闭
不保存直接退出:要是觉得这次编辑不太满意,改动都不想要了,按下 Esc 键进入命令模式,紧接着输入 :q! 回车。注意这个 !,它起着强制的作用,让编辑器无视那些未保存的修改,强行退出。演示如下:
# 按下 Esc 键进入命令模式
: q!
# 回车,编辑器直接关闭,修改未保存
只保存不退出:编辑到一半,担心电脑出状况丢了辛苦写的内容,想先存个档?按 Esc 键进入命令模式,输入 :w 回车就行。操作如下:
# 编辑中途,按下 Esc 键
: w
# 回车,文件保存,可继续编辑
三、深入探索三种模式
Vi/Vim 编辑器最精妙之处在于其三模式设计:命令模式、插入模式、末行模式,灵活切换、熟练运用是掌握它的关键。
(一)命令模式(Command Mode)
这是打开 Vi/Vim 编辑器的默认模式,掌管着光标移动、文本删改、复制粘贴等诸多本领。
- 光标移动操作:
假设正在编辑test.txt文件,内容如下:
The quick brown fox jumps over the lazy dog.
Another line for testing cursor movement.
最直观的,你能用键盘上的方向键操控光标走向;同时,还有一套高效的快捷键——h(向左移动光标)、j(向下移动光标)、k(向上移动光标)、l(向右移动光标)。要是光标在首行开头,想快速移到首行末尾,连按 l 键就行:
# 光标处于首行开头
l
l
l
l
l
l
l
l
l
l
# 光标移至 'dog.' 的 '.' 位置
要是想迅速回到文件开头,按下 gg;想直达文件末尾,按 G;要是想去指定行,比如第 3 行,输入 3G 就行。
- 文本删除操作:
碰上文件里有多余字符或行要清理的时候,这些操作就派上用场了。
删除单个字符,把光标移到目标字符上,按下x键。比如说想删去第二行的r字符:
# 移动光标到第二行 'r' 字符位置
x
# 该行变为 'Another line fo testing cursor movement.'
要是一整行都多余,把光标移到该行,按 dd 键就能删除整行。要是觉得第二行没用了,操作如下:
# 移动光标到第二行
j
# 按 dd 键删除该行
dd
# 文件就剩一行:The quick brown fox jumps over the lazy dog.
- 文本复制粘贴操作:
想复制一行内容,先把光标移到该行,按下yy键;粘贴的时候,把光标移到目标位置,按p键就行。比如复制首行,贴到文末:
# 移光标到首行
gg
# 按 yy 复制首行
yy
# 移光标到文末
G
# 按 p 粘贴
p
# 文件内容变成:
# The quick brown fox jumps over the lazy dog.
# The quick brown fox jumps over the lazy dog.
(二)插入模式(Insert Mode)
从命令模式按下特定按键,就能进入这个自由输入文字的模式。
想在光标当前位置插入文字,按下 i 键。要是文件里 test 拼成了 tset,移光标到 s 后,按 i 键输入 e 修正,再按 Esc 回命令模式:
# 移光标到 's' 后
i
# 输入 'e'
e
# 按 Esc,单词变回 'test'
要是想在光标后面位置插入文字,按 a 键。比如想在 The 和 quick 间加 very,移光标到 The 后空格,按 a 键输入 very,按 Esc 回命令模式:
# 移光标到指定位置
a
# 输入'very'very
# 按 Esc,变为 'The very quick brown fox jumps over the lazy dog.'
要是想在当前行下方新开一行并插入文字,按下 o 键。假设文件最后一行写完了,想新开一行写总结,移光标到末行,按 o 键,输入总结内容,再按 Esc 回命令模式:
# 移光标到末行
# 按 o 键新开一行
o
# 输入总结内容,例如 'This is the end of the text.'
This is the end of the text.
# 按 Esc 完成操作
(三)末行模式(Last Line Mode)
在命令模式下按下 : 键,就进入了这个用于执行关键操作的末行模式。
保存文件与退出编辑器的操作咱们前面提过了,再来说说查找替换功能。
假设 test.txt 文件里多次出现 the,想把它们全换成 a,在命令模式下按下 : 键进入末行模式,输入 :%s/the/a/g 回车。这里,% 表示针对整个文件;s 是 substitute 的简写,意为替换;the 是要被替换的内容;a 是替换后的内容;g 表示全局替换,要是不加 g,只替换每行第一个匹配项。操作如下:
# 在命令模式下按 : 键进入末行模式
:
# 输入查找替换命令,然后回车
:%s/the/a/g
# 文件里所有 'the' 都被替换成 'a'
要是只想替换指定行内的内容,比如只替换第 2 行的 the,输入 :2s/the/a/g 回车就行。
四、总结与练习
Vi/Vim 编辑器功能远不止这些,咱们今天学的只是冰山一角。初次接触可能觉得模式切换有点绕,但多练习、多实操,形成肌肉记忆,很快就能得心应手。
以下是一个综合练习案例,涵盖了前面所讲的 Vi/Vim 编辑器的相关知识点:
练习案例
现有一个名为 practice.txt 的文本文件,内容如下:
The beautiful flower grows beside the small path.
There are many stones on the path.
The color of the flower is red.
请按照以下要求对该文件进行操作:
- 启动 Vim 编辑器打开
practice.txt文件。 - 将光标快速移动到文件末尾,然后再移动回文件开头。
- 删除第二行整行内容。
- 复制第三行内容,并粘贴到第一行下方。
- 在第一行 “The” 和 “beautiful” 之间插入单词 “very”。
- 进入末行模式,将文件中所有的 “the” 替换成 “a”(全局替换)。
- 保存文件并退出编辑器。
操作步骤及答案
- 启动 Vim 编辑器打开
practice.txt文件:
在终端输入以下命令:
vim practice.txt
- 将光标快速移动到文件末尾,然后再移动回文件开头:
进入编辑器后,按G键可将光标快速移动到文件末尾;再按gg键,就能将光标移动回文件开头。 - 删除第二行整行内容:
先通过按j键将光标移动到第二行(也可以使用其他光标移动快捷键组合来定位),然后按下dd键,即可删除第二行整行内容。此时文件内容变为:
The beautiful flower grows beside the small path.
The color of the flower is red.
- 复制第三行内容,并粘贴到第一行下方:
将光标移动到第三行(可以使用3G等方式快速定位),按下yy键复制该行内容;接着将光标移动到第一行末尾(可以通过多次按l键或者使用其他合适的光标移动操作),按下p键进行粘贴。此时文件内容变为:
The beautiful flower grows beside the small path.
The color of the flower is red.
The color of the flower is red.
- 在第一行 “The” 和 “beautiful” 之间插入单词 “very”:
将光标移动到第一行 “The” 后的空格处,按下i键进入插入模式,接着输入 “very”,再按Esc键返回命令模式。此时第一行内容变为 “The very beautiful flower grows beside the small path.”,文件整体内容如下:
The very beautiful flower grows beside the small path.
The color of the flower is red.
The color of the flower is red.
- 进入末行模式,将文件中所有的 “the” 替换成 “a”(全局替换):
在命令模式下按下:键进入末行模式,输入:%s/the/a/g回车,即可完成全局替换操作。此时文件内容变为:
A very beautiful flower grows beside a small path.
A color of a flower is red.
A color of a flower is red.
- 保存文件并退出编辑器:
按下Esc键确保处于命令模式,然后输入:wq回车,就可以保存文件并退出 Vim 编辑器了。
通过这个练习案例,可以对前面所学的 Vi/Vim 编辑器的启动、光标移动、文本删除、复制粘贴以及末行模式下的查找替换、保存退出等知识点进行巩固练习,希望大家可以多多练习,熟练掌握 Vi/Vim 编辑器的使用哦。
相关文章:
Linux Vi/Vim使用 ⑥
掌握 CentOS 7 下的 Vi/Vim 编辑器:从安装到精通 在 CentOS 7 系统的日常运维、编程开发以及各类文本处理场景中,Vi/Vim 编辑器都是不可或缺的得力工具。它以轻量、高效、功能强大著称,虽然初次上手有一定学习门槛,但掌握之后便能…...
JCR一区牛顿-拉夫逊优化算法+分解对比!VMD-NRBO-Transformer-BiLSTM多变量时序光伏功率预测
JCR一区牛顿-拉夫逊优化算法分解对比!VMD-NRBO-Transformer-BiLSTM多变量时序光伏功率预测 目录 JCR一区牛顿-拉夫逊优化算法分解对比!VMD-NRBO-Transformer-BiLSTM多变量时序光伏功率预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.中科院…...
easyExcel实现表头批注
背景: 网上大部分都不能直接使用,为此总结一个方便入手且可用的工具,用自定义注解实现 依赖包: <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>…...
Pytest测试用例使用小结
基础使用 Pytest 测试用例实现代码 import pytest from server.service import Servicepytest.fixture def service():return Service(logger)class TestService:classmethoddef setup_class(cls):"""初始化设置一次:return:"""logger.info(&q…...
LeetCode题练习与总结:132 模式--456
一、题目描述 给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 &a…...
IdentityServer4框架、ASP.NET core Identity
OAuth2.0 IdentityServer4 官网 中文官网 ASP.NET Core Identity提供了一个用来管理和存储用户账户的框架. IdentityServer4是基于ASP.NET Core实现的认证和授权框架,是对OpenID Connect和OAuth 2.0协议的实现。 IdentityServer是一个中间件,它可以添加符合OpenID…...
【分子材料发现】——GAP:催化过程中吸附构型的多模态语言和图学习(数据集处理详解)(二)
Multimodal Language and Graph Learning of Adsorption Configuration in Catalysis https://arxiv.org/abs/2401.07408Paper Data: https://doi.org/10.6084/m9.figshare.27208356.v2 1 Dataset CatBERTa训练的文本字符串输入来源于Open Catalyst 2020 (OC20…...
SpringBoot开发过程中经常遇到问题解决方案分享
目录 1. Spring Boot应用启动缓慢 2. 数据库连接池配置问题 3. Spring Boot应用无法连接外部服务 4. 配置文件读取不生效 5. Spring Boot应用的日志输出不完整 6. Spring Boot中的Transactional事务管理问题 1. Spring Boot应用启动缓慢 问题原因: Spring Boo…...
AR眼镜_消费级工业AR智能眼镜主板硬件解决方案
AR眼镜的研发是一项复杂的软硬件集成工程,它需要在摄影、音频、交互和连接等多个方面提供卓越的基础体验,因此产品的每个细节都显得尤为重要。 在设计AR眼镜时,重量、体积和散热性能都是必须认真考量的关键因素。在芯片平台的选择上ÿ…...
Springboot 核心注解
Spring Boot 是一个基于 Spring 框架的扩展,旨在简化新 Spring 应用的初始搭建以及开发过程。它通过自动配置和约定优于配置的原则,减少了开发者的工作量。Spring Boot 提供了一组核心注解和 Starter 依赖管理工具来帮助开发者快速启动项目。 1. Spring…...
Nacos集群搭建【Oracle作外部数据源】
一、知识点分析 1.Nocas是什么? Nacos是一个动态服务发现、配置管理和服务管理平台。 1.1定义与背景: Nacos,全称为Dynamic Naming and Configuration Service,是由阿里巴巴开源的云原生应用配套工具。它旨在简化微服务架…...
云轴科技ZStack出席中国电信国际EMCP平台香港发布会,持续推动海外合作
近日,以“云聚未来 翼起新篇”为主题的中国电信国际多云服务一站式平台(E-surfing Managed Cloud Platform,简称EMCP平台)新闻发布会在香港成功举办,标志着中国电信国际在云计算服务领域取得了又一重大进展。云轴科技…...
爬虫自动化之drissionpage+SwitchyOmega实现随时切换代理ip
本文介绍了如何使用DrizzlePage进行爬虫自动化,并重点讲解了首次启动时设置代理IP以及通过SwitchyOmega插件实现随时切换代理IP的方法。 安装一次,后面调用就不会再去安装了 下载地址:https://github.com/FelisCatus/SwitchyOmega/releases 这两个文件随便那个都可以,下载…...
docker安装kettle(PDI)并实现web访问
我是MAC电脑M1版本,希望把软件交给docker进行管理,最近公司同事都通过kettle来实现外部数据对接,所以我本地也有安装kettle需求,在网上找到了这个解决方案操作很简单,但出现了无法访问的情况。我的排查方式是ÿ…...
[软件工程]十.可靠性工程(reliable engineering)
1.什么是可靠性工程 我们希望软件在给定的时间内,运行的时候不会崩溃或者发生失效,同时能保护我们的数据和个人信息。我们要能够信任我们所使用的软件,这意味着软件必须是可靠的。可靠性(reliability):系统…...
【Makefile】编译日志之输出重定向符号 >
用法1 make all >& compilelog.txt make all > compilelog.txt这两个编译命令在功能上有一些细微的区别,主要在于标准输出和标准错误的处理方式。 make all >& compilelog.txt 这个命令会将标准输出(stdout)和标准错误&a…...
linux之less
less命令是Linux系统中一个功能强大的文件查看工具,它允许用户分页查看文件内容,并提供了多种快捷键和选项来增强用户体验。以下是less命令的一些常用操作: 基本使用 查看文件使用less命令的基本语法是less [选项] [文件名]。例如࿰…...
算法-字符串-165.比较版本号
一、题目 二、思路解析 1.思路: 比较的是两个版本号它们以“.”作为分割的部分的有效值(即数值)是否一致 2.常用方法: 1.s.split("\\规则"),将字符串按参数规则进行分割并存储在字符串数组中 String[] str …...
List与Set、数组与ArrayList、ArrayList与LinkedList的区别
List 与 Set 的区别: 项ListSet重复允许重复的对象(多个null也可以)不允许重复的对象(null也只能有一个)有序性有序的。 保持了每个元素的插入顺序。即输出顺序就是输入顺序。 有序和无序都有。 HashSet:无…...
如何在 Odoo18 视图中添加关联数据看板按钮 | 免费开源ERP实施诀窍
文 / 开源智造 Odoo亚太金牌服务 引言 关联数据看板按钮乃是 Odoo 当中的一项强效功能,它容许用户顺遂地访问相关记录,或者直接从模型的表单视图施行特定操作。它们为用户给予了对重要信息的疾速访问途径,并简化了工作流程,由此…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
