【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 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络数据链路层以太网协议

网络数据链路层以太网协议 1. 以太网协议介绍 以太网是一个数据链路层协议&#xff0c;数据链路层的作用是用于两个设备&#xff08;同一种数据链路节点&#xff09;之间进行传递。 以太网不是一种具体的网络&#xff0c;而是一种网络技术标准&#xff0c;既包含了数据链路层…

C++ NULL和nullptr

NULL实际是一个宏&#xff0c;在传统的C头文件(stddef.h)中&#xff0c;可以看到如下代码: #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif 如上是条件编译的宏定义 确保在不同编程环境下正确处理NULL的定义 C中NULL可能被定义…

Kotlin 循环语句详解

文章目录 循环类别for-in 循环区间整数区间示例1&#xff1a;正向遍历示例2&#xff1a;反向遍历 示例1&#xff1a;遍历数组示例2&#xff1a;遍历区间示例3&#xff1a;遍历字符串示例4&#xff1a;带索引遍历 while 循环示例&#xff1a;计算阶乘 do-while 循环示例&#xf…

【STM32】HAL库USB实现软件升级DFU的功能操作及配置

【STM32】HAL库USB实现软件升级DFU的功能操作及配置 文章目录 DFUHAL库的DFU配置修改代码添加条件判断和跳转代码段DFU烧录附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作位带代码位带宏…

使用WebdriverIO和Appium测试App

1.新建项目 打开Webstorm新建项目 打开终端输入命令 npm init -y npm install wdio/cli allure-commandline --save-dev npx wdio config 然后在终端依次选择如下&#xff1a; 然后在终端输入命令&#xff1a; npm install wdio/local-runnerlatest wdio/mocha-frameworkla…

uniapp小程序开发,配置开启小程序右上角三点的分享功能

直接全局配置一个分享的功能&#xff0c;要不然需要一个一个页面去单独配置就太麻烦了&#xff01;&#xff01;&#xff01; 1.新建一个share.js文件&#xff0c;并配置代码&#xff0c;调用onShareMessage()和onShareTimeline()两个函数。 其中&#xff1a; title&#xff1…

行业案例:高德服务单元化方案和架构实践

目录 为什么要做单元化 高德单元化的特点 高德单元化实践 服务单元化架构 就近接入实现方案 路由表设计 路由计算 服务端数据驱动的单元化场景 总结 系列阅读 为什么要做单元化 单机房资源瓶颈 随着业务体量和服务用户群体的增长,单机房或同城双机房无法支持服…

ip属地什么条件会改变?多角度深入探讨

IP属地&#xff0c;即IP地址的归属地&#xff0c;是互联网上设备连接时的一个关键信息&#xff0c;它通常反映了设备连接互联网时的地理位置。随着社交软件及各大平台推出IP归属地显示功能&#xff0c;IP属地的变化问题逐渐受到广大用户的关注。那么&#xff0c;IP属地在什么条…

内网服务器添加共享文件夹功能并设置端口映射

参考网址 https://blog.csdn.net/Think88666/article/details/118438465 1.服务器安装smb服务&#xff0c;由于网路安全不允许使用默认端口&#xff08;445&#xff0c;446&#xff09;&#xff0c;于是修改端口为62445、62446。 2.每台需要共享的电脑都要修改端口映射&#x…

【干货】交换网络环路介绍

定义 以太网交换网络中为了提高网络可靠性&#xff0c;通常会采用冗余设备和冗余链路&#xff0c;然而现网中由于组网调整、配置修改、升级割接等原因&#xff0c;经常会造成数据或协议报文环形转发&#xff0c;不可避免的形成环路。如图7-1所示&#xff0c;三台设备两两相连就…

Linux服务器网络丢包场景及解决办法

一、Linux网络丢包概述 在数字化浪潮席卷的当下&#xff0c;网络已然成为我们生活、工作与娱乐不可或缺的基础设施&#xff0c;如同空气般&#xff0c;无孔不入地渗透到各个角落。对于 Linux 系统的用户而言&#xff0c;网络丢包问题却宛如挥之不去的 “噩梦”&#xff0c;频繁…

Springboot内置Apache Tomcat 安全漏洞(CVE-2024-50379)

背景 大家都知道我们使用Springboot开发后&#xff0c;无需再额外配置tomcat&#xff0c;因为Springboot已经帮我们内置好了tomcat。 这次在线上安全团队就扫出来了我们Springboot服务的tomcat漏洞&#xff1a; 可以看到这是2023年的洞&#xff0c;Apache Tomcat 安全漏洞(…

杭州铭师堂的云原生升级实践

作者&#xff1a;升学e网通研发部基建团队 公司介绍 杭州铭师堂&#xff0c;是一个致力于为人的全面发展而服务的在线教育品牌。杭州铭师堂秉持“用互联网改变教育&#xff0c;让中国人都有好书读”的使命&#xff0c;致力于用“互联网教育”的科技手段让更多的孩子都能享有优…

qml XmlListModel详解

1、概述 XmlListModel是QtQuick用于从XML数据创建只读模型的组件。它可以作为各种view元素的数据源&#xff0c;比如ListView、GridView、PathView等&#xff1b;也可以作为其他和model交互的元素的数据源。通过XmlRole定义角色&#xff0c;如name、age和height&#xff0c;并…

使用Selenium进行网页自动化测试

在使用Selenium进行网页自动化测试时&#xff0c;获取网络请求数据&#xff08;即network数据&#xff09;并不直接由Selenium库提供。Selenium主要用于与网页内容进行交互&#xff08;如点击、输入文本、获取页面元素等&#xff09;&#xff0c;但它本身不拦截或记录网络请求。…

380.O(1) 时间插入、删除和获取随机元素

实现RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象 bool insert(int val) 当元素 val 不存在时&#xff0c;向集合中插入该项&#xff0c;并返回 true &#xff1b;否则&#xff0c;返回 false 。 bool remove(int val) 当元素 val 存在时&#xf…

《异步编程之美》— 全栈修仙《Java 8 CompletableFuture 对比 ES6 Promise 以及Spring @Async》

哈喽&#xff0c;大家好&#xff01;在平常开发过程中会遇到许多意想不到的坑&#xff0c;本篇文章就记录在开发过程中遇到一些常见的问题&#xff0c;看了许多博主的异步编程&#xff0c;我只能说一言难尽。本文详细的讲解了异步编程之美&#xff0c;是不可多得的好文&#xf…

python 3个线程轮流打印A、B、C

要实现 Python 中三个线程轮流打印 A、B、C 的效果&#xff0c;可以使用 threading 模块和 Condition 或 Lock 来同步线程。以下是使用 Condition 的解决方案&#xff1a; 代码实现 import threading# 初始化条件变量 condition threading.Condition() current 0 # 共享变…

《机器学习》之K-means聚类

目录 一、简介 二、K-means聚类实现步骤 1、初始化数据点、确定K值 2、通过距离分配数据点 3、更新簇中心 4、 迭代更新 三、聚类效果评价方式 1、轮廓系数的定义 2、整体轮廓系数 3、使用场景 4、优点 5、缺点 6、代码实现方法 四、K-means聚类代码实现 1、API接…

MVC执行流程

&#xff08;1&#xff09;用户通过浏览器&#xff08;客户端&#xff09;向服务端&#xff08;后端&#xff09;发送请求&#xff0c;请求会被前端控制器DispatcherServlet拦截。 &#xff08;2&#xff09;DispatcherServlet拦截到请求后&#xff0c;会调用处理器映射器&…