【Vim Masterclass 笔记11】S06L24 + L25:Vim 文本的插入、变更、替换与连接操作同步练习(含点评课)
文章目录
- S06L24 Exercise 06 - Inserting, Changing, Replacing, and Joining
- 1 训练目标
- 2 操作指令
- 2.1. 打开 insert-practice.txt 文件
- 2.2. 练习 `i` 命令
- 2.3. 练习 `I` 命令
- 2.4. 练习 `a` 命令
- 2.5. 练习 `A` 命令
- 2.6. 练习 `o` 命令
- 2.7. 练习 `O` 命令
- 2.8. 练习 `j` 命令
- 2.9. 练习 `R` 命令
- 2.10. 练习 `r` 命令
- 2.11. 练习 `c` 命令
- 2.12. 用 `~` 命令变更大小写
- 2.13. 练习 `U` 命令
- 2.14. 练习 `u` 命令
- 2.15. 重复命令练习
- 3 自由练习
- 4 退出 Vim
- S06L25 同步练习点评课
写在前面
介绍Vim知识点的文章很多,但提供同步练习的配套文章却没有几篇。本篇是对第 21 课的配套练习,非常适合快速形成肌肉记忆,攻克Vim核心基础操作。我也相信,即便我这样说了,对Vim感兴趣的朋友也未必会下载练习文件同步实践,可能对他们而言学习Vim还少了某些机缘。这篇文章本就是主要写给自己看的,我也无需过多宣传。
S06L24 Exercise 06 - Inserting, Changing, Replacing, and Joining
1 训练目标
练习 Vim 中的文本插入、变更、替换与连接。1
2 操作指令
2.1. 打开 insert-practice.txt 文件
用 Vim 打开源码包内的练习文件 insert-practice.txt(默认解压到 Downloads 文件夹下):
cd Downloads
cd vimclass
vim insert-practice.txt
2.2. 练习 i 命令
切记,i 命令会在当前光标位置进入 Vim 插入模式。利用 i 命令在文件第一行开头插入一些文字。例如 "vim",然后按 Escape 键返回常规模式。
2.3. 练习 I 命令
按 2J 将光标下移至这一行文本:
<= What is your favorite color?
利用 I 命令在行首插入文字来回答上面的提问。例如,答案为 blue(蓝色),然后按 Escape 键回到常规模式。
2.4. 练习 a 命令
按 2J 定位到下面这行文本,并练习在 >< 符号之间输入您的姓名。
Enter your name here =><=
为此,需要用 F> 定位到 > 字符下(注意:f 命令将在第 L23 课 Vim 文本检索中详细介绍,这里用于让光标快速定位到同一行的指定字符位置)。然后利用 a 命令从光标的后面进入插入模式。输入任意姓名,并按 Escape 键回到常规模式。
2.5. 练习 A 命令
按 2J 定位到下面这行文本,然后通过 A 命令在该行末尾进入插入模式,接着输入姓名。输入完毕,按 Escape 键回到常规模式。
Enter your name here:
2.6. 练习 o 命令
按 2J 定位到下面这行文本,键入 O 在当前行的下一行进入插入模式,然后输入您最喜爱的一部电影名。输入完毕,按 Escape 键回到常规模式。
One the line below, type the name of your favorite movie.
2.7. 练习 O 命令
按 2J 定位到下面这行文本,键入 ShiftO 在当前行的上一行进入插入模式,然后输入 vim。按 Escape 键回到常规模式。
^^^ One the line above, type the name of the editor you are using.
2.8. 练习 j 命令
按 3J 定位到下面这行文本,尝试连接下列两行文本:
This line belongs
with the one below it.
完成相关操作后,文字将显示在同一行上:
This line belongs with the one below it.
为此,需要键入 ShiftJ。
2.9. 练习 R 命令
按 2J 定位到下面这行文本,试将单词 her 替换为 our。
替换前:
Vim is her favorite editor.
替换后:
Vim is our favorite editor.
先按 ShiftFH 进行反向查,找将光标移至单词 her 中的 h 下方,然后通过 R 命令进入替换模式,并输入 our。最后按 Escape 键回到常规模式。
2.10. 练习 r 命令
拟对如下文本行进行更改:
I have a white car.
更改后变为:
I have a white cat.
先按 2J 定位到下面这行文本,再用 FR 将光标定位到单词 car 的 r 字符下(注意:f 命令将在第 L23 课 Vim 文本检索中详细介绍,这里用于让光标快速定位到同一行的指定字符位置)。接着按 R 键启用替换命令,然后输入字符 t 完成替换。
2.11. 练习 c 命令
试将下列句子中的 great 变更为 brilliant:
I am having a great time in this vim class!
最终变为:
I am having a brilliant time in this vim class!
先用 /GR + Enter 将光标定位到单词 great 的 g 字符下(注意:/ 命令将在第 23 课 Vim 文本检索中详细介绍,这里仅用于将光标快速定位到 great 的 g 位置,支持跨行检索)。接着按 CW(即 change word,更改单词),再输入单词 brilliant 完成变更。最后,按 Escape 键回到常规模式。
接着,将下列句子中的 myself. 改为 everyone!:
I love myself.
这是编辑后的效果:
I love everyone!
先将光标定位到 myself 的 m 字符上,可通过 /my + Enter 实现(注意:/ 命令将在第 23 课 Vim 文本检索中详述,这里仅用于快速定位光标到指定位置,且支持跨行检索)。然后输入 cW,实现带标点更改单词;接着再输入 everyone! 即可。最后,按 Escape 键回到常规模式(注意:本例也可以通过 c$ 或 C 命令实现与 cW 命令相同的效果)。
最后,试将下列一整行文字改为任意内容:
Type something wonderful here.
先按 2J 定位到这行文本,然后键入 cc 命令,以实现整行更改。然后输入任意内容,例如 The sky is beautiful!,并按 Escape 键返回常规模式。
2.12. 用 ~ 命令变更大小写
将下列文字中单词 monday 的首字母改为大写:
monday <= The "m" is supposed to be in uppercase.
为此,需按 /m + Enter 进行正向检索,将光标定位到 m 处;然后键入 ~ 完成大小写转换。
将下列文字中的单词 shout 全部改为大写形式:
Don't shout. It's not nice.
为此,需按 /sh + Enter 进行正向检索,将光标定位到 s 下方;然后键入 G~W 实现大写转换操作。
再对下面一整行内容切换大小写:
mONDAY'S START BETTER WITH coffee.
最终效果如下:
Monday's start better with COFFEE.
为此,先按 2J 定位到这行文本的任意位置,然后键入 G</kbd><kbd> 完成整行字符的大小写切换。
2.13. 练习 U 命令
试将下列文字中的单词 Shout 改为 SHOUT:
Don't Shout. It's just too loud.
为此,先用 /S + Enter 正向检索,将光标定位到 S 下方;然后输入命令 gUw,完成单词的大写转换操作。
接着,在下一行再尝试一次,不过这次要改用 gUW 命令。
2.14. 练习 u 命令
将下列文字中的单词 Whisper 改为小写的 whisper:
Please Whisper.
为此,先用 /W + Enter 正向检索,将光标放在 W 下方;然后输入 guw 完成小写转换(注意:本例中也可以直接使用 ~ 命令)。
2.15. 重复命令练习
在下列文字的下面一行输入 80 个星号(*):
Create a line of asterisks below:
为此,先用 3J 将光标定位到该行文本的下一行;然后输入 80I 进入插入模式,拟重复执行 80 次;再键入 * 插入星号。最后按 Escape 键切回常规模式,并查看 Vim 自动插入的 80 个星号效果。
接着,再在下列文本行的下方三行,每行各插入一个连字符 -:
Create 3 lines that begin with "-" below:
为此,先用 2J 定位到该行文本;然后使用 o 命令,键入 3O,并在新行中输入一个连字符 -;最后按 Escape 键切回常规模式,并查看 Vim 自动生成的另两行效果。
3 自由练习
鼓励自行尝试一些组合练习。最好是有个现成的文件需要修改,然后用 Vim 打开,用学到的文本插入、更改、替换与连接的知识来操作文件内容。
4 退出 Vim
若要放弃文件变更以便下次重新练习,使用退出命令 :q! + Enter。
S06L25 同步练习点评课
完全按上述操作进行,没有延伸知识。建议多思多练。
本节练习另附精美排版 PDF 格式,阅读体验更佳,详见:
vimclass/Exercise-06-InsertingChangingReplacingandJoining.pdf↩︎
相关文章:
【Vim Masterclass 笔记11】S06L24 + L25:Vim 文本的插入、变更、替换与连接操作同步练习(含点评课)
文章目录 S06L24 Exercise 06 - Inserting, Changing, Replacing, and Joining1 训练目标2 操作指令2.1. 打开 insert-practice.txt 文件2.2. 练习 i 命令2.3. 练习 I 命令2.4. 练习 a 命令2.5. 练习 A 命令2.6. 练习 o 命令2.7. 练习 O 命令2.8. 练习 j 命令2.9. 练习 R 命令2…...
分布式组件底层逻辑是什么?
分布式组件是指在分布式系统中执行特定功能的模块,通常分布在多个物理节点上,共同协作完成任务。其底层逻辑包括多个方面,从通信和数据管理到一致性和容错设计,具体如下: 1.分布式组件的核心特点 分布性:功…...
Spring Boot中的扫描注解如何使用
在 Spring Boot 中,扫描注解是指通过注解来告诉 Spring 框架应该扫描哪些包、哪些类或哪些特定的组件,并将其作为 Spring 容器中的 bean 进行管理。Spring Boot 主要通过以下几种注解来实现自动扫描: ComponentScanSpringBootApplicationCom…...
初识JVM HotSopt 的发展历程
目录 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 各大 JVM look 看一下虚拟机 HotSopt 的发展历程 总结 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 即时编译 主要是…...
基于springboot果蔬供应链信息管理平台
基于Spring Boot的果蔬供应链信息管理平台是一种集成了先进信息技术和果蔬供应链管理理念的综合性系统。 一、背景与意义 随着人们生活水平的提高和对健康饮食的重视,果蔬市场需求不断增长。然而,果蔬供应链涉及多个环节,包括种植、采摘、加…...
掌握 React 关键:理解 super () 和 super (props) 的不同应用
在 React 中,super() 和 super(props) 都与 React 类组件的构造函数(constructor)以及继承有关。为了理解它们之间的区别,我们需要了解 JavaScript 类继承机制以及 React 类组件的工作原理。 1. super() 与 super(props) 的区别 …...
Scala语言的软件开发工具
Scala语言的软件开发工具概述 Scala是一种多范式编程语言,它结合了面向对象编程和函数式编程的特性。随着大数据技术的发展和互联网应用的广泛普及,Scala逐渐成为了开发高性能应用和后端服务的热门选择。为了更好地进行Scala开发,开发者需要…...
斯坦福大学李飞飞教授团队ARCap: 利用增强现实反馈收集高质量的人类示教以用于机器人学习
近年来,通过人类示范进行模仿学习在教授机器人操控技能方面取得了令人瞩目的进展。为了进一步扩大训练数据集的规模,近期的研究开始采用便携式数据采集设备,无需依赖物理机器人硬件。然而,由于在数据采集过程中缺乏机器人实时反馈…...
【Linux】从零开始:编写你的第一个Linux进度条小程序
Linux相关知识点可以通过点击以下链接进行学习一起加油!初识指令指令进阶权限管理yum包管理与vim编辑器GCC/G编译器make与Makefile自动化构建GDB调试器与Git版本控制工具 文章目录 一、知识铺垫1.1 回车与换行概念1.2 缓冲区 二、实现简单倒计时三、进度条3.1 Verrs…...
web前端第八次作业---制作音乐榜单
制作音乐榜单 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…...
心脏扩散张量成像中的异常值检测:射击拒绝还是稳健拟合?|文献速递-视觉大模型医疗图像应用
Title 题目 Outlier detection in cardiac diffusion tensor imaging: Shot rejection or robust fitting? 心脏扩散张量成像中的异常值检测:射击拒绝还是稳健拟合? 01 文献速递介绍 心脏扩散张量成像(Cardiac Diffusion Tensor Imagin…...
Linux Kernel 之十 详解 PREEMPT_RT、Xenomai 的架构、源码、构建及使用
概述 现在的 RTOS 基本可以分为 Linux 阵营和非 Linux 阵营这两大阵营。非 Linux 阵营的各大 RTOS 都是独立发展,使用上也相对独立;而 Linux 阵营则有多种不同的实现方法来改造 Linux 以实现实时性要求。本文我们重点关注 Linux 阵营的实时内核实现方法! 本文我们重点关注 …...
RabbitMQ-消息消费确认
我们一般使用的是消费者作为被动方接收 RabbitMQ 推送消息,另一种是消费者作为主动方可以主动拉取消息。 RabbitMq 服务器推送消息分为隐式(自动)确认和显示确认。 1 消费者拉取消息 消费者作为主动方拉取消息,每次只能获取一条。 using (var channel c…...
E10.【C语言】练习:编写一个猜数字游戏
目录 1.规则 2.准备 3.游戏代码 1.规则 1.程序生成1-100间的随机数 2.用户猜数字 猜对了:游戏结束 猜错了:程序会告知猜大了或猜小了,继续进行游戏,直到猜对 3.游戏可以一直玩除非退出游戏 2.准备 1.框架:循…...
RK3568-rk809rtc休眠唤醒
参考链接 https://www.360doc.cn/article/71858349_1119199262.html修改驱动drivers/mfd/rk808.c static void rk817_shutdown_prepare(void) { int ret; …...
【Uniapp-Vue3】pages.json页面路由globalStyle的属性
项目的全局配置在pages.json中。 一、导航栏设置 二、下拉刷新设置 下拉就可以看到设置的样式 三、上拉触底 这个页面中,向下滑动页面到底部就会输出“到底了” 现在将触底距离设置为500 走到半路就会输出“到底了”...
NHANES数据挖掘|特征变量对死亡率预测的研究设计与分析
书接上回,应各位临床或在科室的小伙伴们需求,除了多组学和算法开发外,插播关于临床护理方向的数据挖掘,今天分享两篇NHANES的分析文献。 1、时依中介分析 DOI: 10.1186/s12933-024-02191-5 整体思路 基于 NHANES 数据…...
【Sharding-JDBC学习】概述_shardingsphere-jdbc 和sharding-jdbc
1.概述 1.1.分库分表是什么 小明是一家初创电商平台的开发人员,他负责卖家模块的功能开发,其中涉及了店铺、商品的相关业务,设计如下 数据库: 通过以下SQL能够获取到商品相关的店铺信息、地理区域信息: SELECT p.*…...
用户登录/登出功能,当登录页面在另一域名下
需求: 要求为某网址增加用户登录功能。登录页面是现成的,但是位于另一个域名。当request 没带token ,要求跳转此登录页面,用户登录后会返回token. 此时再跳回原网址。这个过程如何避免发生跨域问题? 最简单的方案 登…...
自动化解决方案:修复devicedisplaystatusmanager.dll丢失
在Windows操作系统中,DLL(动态链接库)文件扮演着至关重要的角色。它们为应用程序提供必要的函数和数据,以确保系统的平稳运行。然而,有时我们可能会遇到DLL文件丢失或损坏的问题,比如DeviceDisplayStatusMa…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果:邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
