【Vim Masterclass 笔记12】S06L26 + L27:Vim 文本的搜索、查找及替换同步练习(含点评课)
文章目录
- S06L26 Exercise 07 - Search, Find, and Replace
- 1 训练目标
- 2 操作指令
- 2.1. 打开 search-practice.txt 文件
- 2.2. 同一行内的搜索练习
- 2.3. 当前文件内的搜索练习
- 2.4. 单词搜索练习
- 2.5. 全局替换练习
- 3 退出 Vim
- S06L27 同步练习点评课
写在前面
Vim 的文本检索、查找与替换的具体讲解用了两个课时,但同步练习环节却相对精简了很多。可能是因为大部分操作已经在前面两节的演示中说得差不多了,因此除了这篇同步练习,最好结合我梳理的知识点和思维导图,去找到一个真实的文本材料(比如配置文件、源代码文件等)进行实际演练。效果更好。
S06L26 Exercise 07 - Search, Find, and Replace
1 训练目标
练习 Vim
中的文本搜索、查找与替换。1
2 操作指令
2.1. 打开 search-practice.txt 文件
用 Vim
打开源码包内的练习文件 search-practice.txt
(默认解压到 Downloads
文件夹下):
cd Downloads
cd vimclass
vim search-practice.txt
2.2. 同一行内的搜索练习
以下为练习文件的第一行:
The Time Traveller (for so it will be convenient to speak of him) was expounding
按 FF 将光标定位到该行单词 for
的首字符 f
上;再次键入 FF 将定位到下一个 of
的 f
字符位置。切记:在同一行重复该操作,按 ; 即可。
接着,将光标重新定位到 for
的首字母。做法:按 , 实现反向重复检索。
然后,将光标置于单词 Traveller
的开头,键入 ShiftF + ShiftT 实现反向查找。
再将光标置于单词 be
的前一个字符位置,即空格上。做法:利用 till
命令,输入 TB 即可。
将光标定位到单词 speak
的前一个字符(即空格)位置。做法:按 TS。
最后,将光标定位到单词 for
后面的空格上。做法:按 ShiftT + R。
2.3. 当前文件内的搜索练习
查找所有的 and
,并将光标定位到每个匹配项的开头位置至少一次。做法:键入 /and
+ Space + Enter(注意:若没有在 and
后添加空格,则单词 incandescent
也会视为匹配项)。接着用 N 重复上述操作,遍历当前文件中的所有匹配项。
然后掉转搜索方向,并反复按 ShiftN,让光标依次定位到各匹配项的开头位置。
最后,反向检索关键词 to
。具体做法:键入 ?TO。再用 N 重复该操作直到反向检索一整圈;接着键入 ShiftN 掉转反向检索的顺序,直到再检索一整圈。
2.4. 单词搜索练习
将光标定位到文件中首次出现单词 it
的 i
字母下方。实现方法:键入 GG 移至文件开头,然后按 2FI 直接定位到第二个 i
字母位置;然后输入 *,光标将移动到下一处单词 it
位置。按 N 重复上述操作,直到光标重新回到文件第一行。
接下来练习 Vim
的反向检索。先将光标定位到第二行的单词 us
上,可以用 J 下移一行,并通过 ShiftFU 反向检索字符 u
。接着按下 # 键,就能将光标定位到文件最后一处 us
上。最后,通过按 N,直到将光标重新定位到出现在该文件第二行的 us
一词上。
2.5. 全局替换练习
将文中所有的 sat
替换为 laid
。具体做法:先输入 :%s/sat/laid/g
+ Enter。切记:这里的 %
表示一个特殊范围,代表整个文件;而启用 g
标志主要是为了确保在同一行中出现的 sat
字样都能被替换为 laid
。如果不确定某一行是否存在多个匹配项,则可以考虑用 g
标志来确保替换掉所有的匹配项。
3 退出 Vim
若要放弃文件变更以便下次重新练习,使用退出命令 :q!
+ Enter。
S06L27 同步练习点评课
通常,完整单词匹配除了使用 * 或 # 外,还可以在待检索的英文单词后面跟一个空格 <space>
。
本节练习另附精美排版 PDF 格式,阅读体验更佳,详见:
vimclass/Exercise-07-SearchFindReplace.pdf
↩︎
相关文章:
【Vim Masterclass 笔记12】S06L26 + L27:Vim 文本的搜索、查找及替换同步练习(含点评课)
文章目录 S06L26 Exercise 07 - Search, Find, and Replace1 训练目标2 操作指令2.1. 打开 search-practice.txt 文件2.2. 同一行内的搜索练习2.3. 当前文件内的搜索练习2.4. 单词搜索练习2.5. 全局替换练习 3 退出 Vim S06L27 同步练习点评课 写在前面 Vim 的文本检索、查找与…...
Jsoup实现实时爬取
文章目录 1.作用2.使用pom文件引入示例代码(来自官网) 3.测试代码4.上线代码控制层业务层 1.作用 获取Html文档,然后解析出需要的字段 2.使用 pom文件引入 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redi…...

如何在Ubuntu上安装Cmake
前言 本文主要阐述如何在Ubuntu22.04上面安装cmake,具体可看下面的操作。 正文 一、环境 Ubuntu22.04 cmake-3.31.4.tar.gz 二、步骤 参考这个方案: 【运维】Ubuntu如何安装最新版本的Cmake,编译安装Cmake,直接命令安装…...

图解Git——分支开发工作流《Pro Git》
分支开发工作流 由于分支管理的便捷, 才衍生出这些典型的工作模式,你可以根据项目实际情况选择。 1. 长期分支 适用于持续开发和发布周期长的项目。常见的长期分支包括: master:只保留稳定的代码,通常用于生产环境。…...
没有正确使用HTTP Range Request,导致访问Azure Blob存储的视频没有实现流式播放
引文: 组里的小伙伴在修改视频播放相关的代码,修改之前的方案使用CDN转发,可以实现流式播放,修改之后的代码因为没有正确的使用Http Range Request, 导致画面访问Azure Blob存储的视频没有实现流式播放,整理下线索在这…...

回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测
回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测 目录 回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 RVM-Adaboost相关向量机集成学习多输入单输出回归预测是一种先进的机器学习方法,用于处理…...
开发人员学习书籍推荐(C#、Python方向)
作为一名开发人员,持续学习和提升自己的技术水平是至关重要的。如今,技术不断更新换代,新的开发框架、语言和工具层出不穷。对于刚入行的开发者或希望深入某一领域的工程师来说,选对书籍是学习的捷径之一。本篇文章将推荐一些经典…...

Springboot + vue 小区物业管理系统
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...

基于深度学习的视觉检测小项目(十二) 使用线条边框和渐变颜色美化界面
到目前为止,已经建立起了基本的项目架构,样式表体系也初步具备,但是与成品的界面相比,还是差点什么。 我的界面效果图: 优秀demo的界面截图: 是的,我的界面太“平” 了,没有立体感&…...

基于OQuPy的量子编程实例探究:理论、实践与展望
基于OQuPy的量子编程探究:理论、分析与实践 一、引言 1.1 研究背景与意义 近年来,量子计算作为一种革命性的计算范式,在科学界与产业界引发了广泛关注。它依托量子力学原理,运用量子比特(qubit)进行信息处理,与传统计算相比,具备并行处理、指数级加速等显著优势,为解…...

【数据库】二、关系数据库
文章目录 二、关系数据库1 关系2 关系数据库3 完整性约束4 关系运算 二、关系数据库 1 关系 域:一组具有相同数据类型的值的集合。 笛卡尔积:所有域(域可相同)中所有取值的组合 例如:D1{1,2,3},D2{A,b}&…...

C#类型转换
C#是静态类型的语言,变量一旦声明就无法重新声明或者存储其他类型的数据,除非进行类型转换。本章的主要任务就是学习类型转换的知识。类型转换有显式的,也有隐式的。所谓显式,就是我们必须明确地告知编译器,我们要把变…...

【Vue】Vue组件--上
目录 一、组件基础 二、组件的嵌套关系 1. 基础架构 2. 嵌套 三、组件注册方式 1. 局部注册: 2. 全局注册: 四、组件传递数据 1. 基础架构 2. 传递多值 3. 动态传递数据 五、组件传递多种数据类型 1. Number 2. Array 3. Object 六、组…...

21、Transformer Masked loss原理精讲及其PyTorch逐行实现
1. Transformer结构图 2. python import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0batch_size 2seq_length 3vocab_size 4logits torch.randn(batch…...

构建高性能网络服务:从 Socket 原理到 Netty 应用实践
1. 引言 在 Java 网络编程中,Socket 是实现网络通信的基础(可以查看我的上一篇博客)。它封装了 TCP/IP 协议栈,提供了底层通信的核心能力。而 Netty 是在 Socket 和 NIO 的基础上,进一步封装的高性能、异步事件驱动的…...
Spring Boot教程之五十六:用 Apache Kafka 消费 JSON 消息
Spring Boot | 如何使用 Apache Kafka 消费 JSON 消息 Apache Kafka 是一个流处理系统,可让您在进程、应用程序和服务器之间发送消息。在本文中,我们将了解如何使用 Apache Kafka 在 Spring Boot 应用程序的控制台上发布 JSON 消息。 为了了解如何创建 …...

Elasticsearch ES|QL 地理空间索引加入纽约犯罪地图
可以根据地理空间数据连接两个索引。在本教程中,我将向你展示如何通过混合邻里多边形和 GPS 犯罪事件坐标来创建纽约市的犯罪地图。 安装 如果你还没有安装好自己的 Elasticsearch 及 Kibana 的话,请参考如下的链接来进行安装。 如何在 Linux࿰…...
csp-j知识点:联合(Union)的基本概念
一、联合(Union)的基本概念 联合是C/C语言中一种特殊的数据结构,它的主要特点是所有成员共享同一块内存空间。这意味着在任何给定时刻,联合中只有一个成员是有效的,因为它们都占用相同的物理内存位置。联合的大小取决…...

docker-compose 方式安装部署confluence
一、confluence简介 Confluence是一款由澳大利亚软件公司Atlassian开发的企业协作工具。它是一个基于web的团队协作平台,用于帮助团队成员共享和协同工作的知识、文档、想法和项目。 Confluence提供了一个集中管理和共享文档、知识库和项目信息的平台。团队成员可…...

深入理解计算机系统阅读笔记-第十二章
第12章 网络编程 12.1 客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型的。根据这个模型,一个应用时由一个服务器进程和一个或者多个客户端进程组成。服务器管理某种资源,并且通过操作这种资源来为它的客户端提供某种服务。例如…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...