当前位置: 首页 > news >正文

【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 将光标定位到单词 carr 字符下(注意: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 将光标定位到单词 greatg 字符下(注意:/ 命令将在第 23 课 Vim 文本检索中详细介绍,这里仅用于将光标快速定位到 greatg 位置,支持跨行检索)。接着按 CW(即 change word,更改单词),再输入单词 brilliant 完成变更。最后,按 Escape 键回到常规模式。

接着,将下列句子中的 myself. 改为 everyone!

I love myself.

这是编辑后的效果:

I love everyone!

先将光标定位到 myselfm 字符上,可通过 /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 同步练习点评课

完全按上述操作进行,没有延伸知识。建议多思多练。


  1. 本节练习另附精美排版 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…...

分布式组件底层逻辑是什么?

分布式组件是指在分布式系统中执行特定功能的模块&#xff0c;通常分布在多个物理节点上&#xff0c;共同协作完成任务。其底层逻辑包括多个方面&#xff0c;从通信和数据管理到一致性和容错设计&#xff0c;具体如下&#xff1a; 1.分布式组件的核心特点 分布性&#xff1a;功…...

Spring Boot中的扫描注解如何使用

在 Spring Boot 中&#xff0c;扫描注解是指通过注解来告诉 Spring 框架应该扫描哪些包、哪些类或哪些特定的组件&#xff0c;并将其作为 Spring 容器中的 bean 进行管理。Spring Boot 主要通过以下几种注解来实现自动扫描&#xff1a; ComponentScanSpringBootApplicationCom…...

初识JVM HotSopt 的发展历程

目录 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 各大 JVM look 看一下虚拟机 HotSopt 的发展历程 总结 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 即时编译 主要是…...

基于springboot果蔬供应链信息管理平台

基于Spring Boot的果蔬供应链信息管理平台是一种集成了先进信息技术和果蔬供应链管理理念的综合性系统。 一、背景与意义 随着人们生活水平的提高和对健康饮食的重视&#xff0c;果蔬市场需求不断增长。然而&#xff0c;果蔬供应链涉及多个环节&#xff0c;包括种植、采摘、加…...

掌握 React 关键:理解 super () 和 super (props) 的不同应用

在 React 中&#xff0c;super() 和 super(props) 都与 React 类组件的构造函数&#xff08;constructor&#xff09;以及继承有关。为了理解它们之间的区别&#xff0c;我们需要了解 JavaScript 类继承机制以及 React 类组件的工作原理。 1. super() 与 super(props) 的区别 …...

Scala语言的软件开发工具

Scala语言的软件开发工具概述 Scala是一种多范式编程语言&#xff0c;它结合了面向对象编程和函数式编程的特性。随着大数据技术的发展和互联网应用的广泛普及&#xff0c;Scala逐渐成为了开发高性能应用和后端服务的热门选择。为了更好地进行Scala开发&#xff0c;开发者需要…...

斯坦福大学李飞飞教授团队ARCap: 利用增强现实反馈收集高质量的人类示教以用于机器人学习

近年来&#xff0c;通过人类示范进行模仿学习在教授机器人操控技能方面取得了令人瞩目的进展。为了进一步扩大训练数据集的规模&#xff0c;近期的研究开始采用便携式数据采集设备&#xff0c;无需依赖物理机器人硬件。然而&#xff0c;由于在数据采集过程中缺乏机器人实时反馈…...

【Linux】从零开始:编写你的第一个Linux进度条小程序

Linux相关知识点可以通过点击以下链接进行学习一起加油&#xff01;初识指令指令进阶权限管理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? 心脏扩散张量成像中的异常值检测&#xff1a;射击拒绝还是稳健拟合&#xff1f; 01 文献速递介绍 心脏扩散张量成像&#xff08;Cardiac Diffusion Tensor Imagin…...

Linux Kernel 之十 详解 PREEMPT_RT、Xenomai 的架构、源码、构建及使用

概述 现在的 RTOS 基本可以分为 Linux 阵营和非 Linux 阵营这两大阵营。非 Linux 阵营的各大 RTOS 都是独立发展,使用上也相对独立;而 Linux 阵营则有多种不同的实现方法来改造 Linux 以实现实时性要求。本文我们重点关注 Linux 阵营的实时内核实现方法! 本文我们重点关注 …...

RabbitMQ-消息消费确认

我们一般使用的是消费者作为被动方接收 RabbitMQ 推送消息&#xff0c;另一种是消费者作为主动方可以主动拉取消息。 RabbitMq 服务器推送消息分为隐式(自动)确认和显示确认。 1 消费者拉取消息 消费者作为主动方拉取消息&#xff0c;每次只能获取一条。 using (var channel c…...

E10.【C语言】练习:编写一个猜数字游戏

目录 1.规则 2.准备 3.游戏代码 1.规则 1.程序生成1-100间的随机数 2.用户猜数字 猜对了&#xff1a;游戏结束 猜错了&#xff1a;程序会告知猜大了或猜小了&#xff0c;继续进行游戏&#xff0c;直到猜对 3.游戏可以一直玩除非退出游戏 2.准备 1.框架&#xff1a;循…...

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中。 一、导航栏设置 二、下拉刷新设置 下拉就可以看到设置的样式 三、上拉触底 这个页面中&#xff0c;向下滑动页面到底部就会输出“到底了” 现在将触底距离设置为500 走到半路就会输出“到底了”...

NHANES数据挖掘|特征变量对死亡率预测的研究设计与分析

书接上回&#xff0c;应各位临床或在科室的小伙伴们需求&#xff0c;除了多组学和算法开发外&#xff0c;插播关于临床护理方向的数据挖掘&#xff0c;今天分享两篇NHANES的分析文献。 1、时依中介分析 DOI&#xff1a; 10.1186/s12933-024-02191-5 整体思路 基于 NHANES 数据…...

【Sharding-JDBC学习】概述_shardingsphere-jdbc 和sharding-jdbc

1.概述 1.1.分库分表是什么 小明是一家初创电商平台的开发人员&#xff0c;他负责卖家模块的功能开发&#xff0c;其中涉及了店铺、商品的相关业务&#xff0c;设计如下 数据库&#xff1a; 通过以下SQL能够获取到商品相关的店铺信息、地理区域信息&#xff1a; SELECT p.*…...

用户登录/登出功能,当登录页面在另一域名下

需求&#xff1a; 要求为某网址增加用户登录功能。登录页面是现成的&#xff0c;但是位于另一个域名。当request 没带token &#xff0c;要求跳转此登录页面&#xff0c;用户登录后会返回token. 此时再跳回原网址。这个过程如何避免发生跨域问题&#xff1f; 最简单的方案 登…...

自动化解决方案:修复devicedisplaystatusmanager.dll丢失

在Windows操作系统中&#xff0c;DLL&#xff08;动态链接库&#xff09;文件扮演着至关重要的角色。它们为应用程序提供必要的函数和数据&#xff0c;以确保系统的平稳运行。然而&#xff0c;有时我们可能会遇到DLL文件丢失或损坏的问题&#xff0c;比如DeviceDisplayStatusMa…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...