【Vim Masterclass 笔记14】S07L29 + L30:练习课08 —— Vim 文本对象同步练习(含点评课内容)

文章目录

  • L29 Exercise 08 - Text Objects
    • 1 训练目标
    • 2 操作指令
      • 2.1. 打开 textobjectspractice.txt 文件
      • 2.2. 单词对象练习 Word Objects
      • 2.3. 区块对象 `( )` 练习 Block Object ( )
      • 2.4. 引用字符串练习 Quoted Strings
      • 2.5. 区块对象 `[ ]` 练习 Block Object [ ]
      • 2.6. 区块对象 `< >` 练习 Block Object < >
      • 2.7. 标签对象练习 Tag Objects
      • 2.8. 区块对象 `{ }` 练习 Block Object { }
      • 2.9. 句子对象练习 Sentence Objects
      • 2.10. 段落对象练习 Paragraph Objects
    • 3 退出 Vim
  • S07L30 Exercise 08 - Text Objects - Walkthrough 练习点评课

写在前面
本篇为上节课 Vim 文本对象操作的同步练习,已根据英文表述进行了全文翻译,方便今后快速查找、练习。从文本的增删改、再到上一章的查找检索替换、再到本节的文本对象操作,每一部分要么讲解十分详细,要么加大练习量,足以看出这些知识点在 Vim 中的核心地位。这就是刻意思考后的刻意练习,望各位着眼长远,且行且珍惜。

L29 Exercise 08 - Text Objects


1 训练目标

熟悉 Vim 中的各类文本对象。1

2 操作指令

2.1. 打开 textobjectspractice.txt 文件

Vim 打开源码包内的练习文件 textobjectspractice.txt(默认解压到 Downloads 文件夹下):

cd Downloads
cd vimclass
vim textobjectspractice.txt

2.2. 单词对象练习 Word Objects

将光标定位到首行单词 Time 的任意位置,例如按 FI 定位到最近的 i 字符下。然后按 DAW 删除该单词。注意观察,此时整个单词都被删除了,与使用 DW 删除的结果不同。

接下来再将单词 Traveller 改为 tourist。具体做法:用 CIW 更改内部单词(inner word),然后输入 tourist。最后按 Escape 键返回常规模式。

2.3. 区块对象 ( ) 练习 Block Object ( )

W 将光标移至左小括号位置,然后将括号内的文本改为 as we will call him。具体做法:按 CI(CI) 变更该区块内的文字内容。注意观察,此时光标刚好位于小括号内,接着输入 as we will call him,再按 Escape 键返回常规模式。

此时文档第一行如下所示:

The tourist (as we will call him) was expounding.

再定位到如下文本行,并令光标处于小括号内部、或就在小括号上:

print("The weatherman said, 'This weekend will be warm,' but that was a lie.")

这是其中一种实现方案:按 /( + Enter。接着,试通过三个字符的组合命令删除小括号这一整块内容(即 ("The weatherman said, 'This weekend will be warm,' but that was a lie."))。该命令为 DA( 或者 DA)

2.4. 引用字符串练习 Quoted Strings

光标移至下一行,并将其定位到双引号内的任意位置(例如使用 /" + Enter)。然后将下列文字:

print("The weatherman said, 'This weekend will be warm,' but that was a lie.")

改为:

print("It was cold!")

具体做法:键入 CI",并输入 It was cold!,再按 Escape 键返回常规模式。

接着移至下一行,这次需要将单引号内的文字由 'This weekend will be warm,' 改为 'It is hot outside,'。为此,先用 / + Enter 进行正向搜索,然后输入 CI,并将原文本改为 It is hot outside,。最后按 Escape 键返回常规模式。

2.5. 区块对象 [ ] 练习 Block Object [ ]

快速删除下列括号内所有文字内容。这是删除前的原始文本:

scripts=[ 'bin/backup',
          'bin/backup-all',
          'bin/backup-db-only',
          'bin/backup-files-only' ]

删除后将变为:

scripts=[]

先将光标定位到括号内的任意位置,例如通过检索 bin 实现:执行命令 /bin + Enter。然后,按 DI[ 或者 DI] 删除方括号内的所有内容。

2.6. 区块对象 < > 练习 Block Object < >

JJ 将光标移至如下这行:

<yank_me>

接着,将尖括号内的文本复制到 "i 寄存器中。具体做法:输入 "iyi> 或者 "iyi<。然后查看寄存器 "i 中的内容是否为 yank_me,方法是:输入命令 :reg i + Enter

然后,再连同尖括号本身,将文本 <yank_me> 复制后存入寄存器 "a。具体做法:输入命令 "aya<"aya>,并通过命令 :reg a + Enter 进行确认,看看寄存器中的内容是否为 <yank_me>

2.7. 标签对象练习 Tag Objects

试将下列文本行中的 Linux Training Academy 改为 LTA。改动前的原始文本如下:

<p><a href="https://linuxtrainingacademy.com">Linux Training Academy</a></p>

这是变更后的效果:

<p><a href="https://linuxtrainingacademy.com">LTA</a></p>

注意观察,目标文本位于 HTML 标签 <a> 内部。为此,需要先将光标定位到 <a> 标签内,例如通过 /H + Enter 实现。然后按 CIT,即在标签内变更内容(change inside tag),然后输入 LTA + Escape

下一段练习文本是 XML 格式的,改动前如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
  <CD>
    <TITLE>Jazz At Massey Hall</TITLE>
    <ARTIST>The Quintet</ARTIST>
  </CD>
  <CD>
    <TITLE>Blue Train</TITLE>
    <ARTIST>John Coltrane</ARTIST>
  </CD>
  <CD>
    <TITLE>Saxophone Colossus</TITLE>
    <ARTIST>Sonny Rollins</ARTIST>
  </CD>
</CATALOG>

试将 CATALOG 中标题为 Jazz At Massey Hall 的 CD 条目完整删除,改动后的效果如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
  <CD>
    <TITLE>Blue Train</TITLE>
    <ARTIST>John Coltrane</ARTIST>
  </CD>
  <CD>
    <TITLE>Saxophone Colossus</TITLE>
    <ARTIST>Sonny Rollins</ARTIST>
  </CD>
</CATALOG>

要删除 <CD> 标签,需要先将光标定位到包含 Jazz At Massey Hall 的条目对应的 <CD></CD> 位置。接着输入 DAT,表示删除该标签(delete a tag)。注意:如果光标定位到其他地方,可能只会删除内部嵌套的标签 <TITLE> 或者 <ARTIST>,而不是题目要求的整个 <CD> 标签。

2.8. 区块对象 { } 练习 Block Object { }

试对如下这段文字进行相关文本对象操作:

musicians = {
  'Charlie Parker': 'alto sax',
  'John Coltrane': 'tenor sax',
  'Sonny Rollins': 'tenor sax'
}

使其最终变为:

musicians = { }

具体做法:先将光标定位到 { } 区块的任意位置,例如检索关键字 alto,键入命令 /ALTO + Enter。然后输入 DI{DI} 删除该区块内的文本,此处光标应位于下列内容所示的右大括号 } 位置:

musicians = {
}

K 令光标上移一行,然后按 ShiftJ 合并这两行即可。

2.9. 句子对象练习 Sentence Objects

复制下列句子内容并存入寄存器 "s 中。将光标定位到这句话的任意位置:

Praesent rutrum purus ultricies, dignissim massa id, elementum felis.

注意观察,这句话并不是真正意义上的句子。切记,Vim 关注的是文本对象的边界,而非边界内的文字内容。句子是通过是否由标点符号 .! 或者 ? 结尾判定的。后面可以紧跟一个行终止符(the end of a line)或者一个空格或制表符。

"SYAS 将这句文本复制到寄存器 "s 中,并通过命令 :reg s + Enter 进行确认。

2.10. 段落对象练习 Paragraph Objects

DAP 删除整个段落。

3 退出 Vim

若要放弃文件变更以便下次重新练习,使用退出命令 :q! + Enter


S07L30 Exercise 08 - Text Objects - Walkthrough 练习点评课

无增补知识点,多思多练即可。


  1. 本节练习另附精美排版 PDF 格式,阅读体验更佳,详见:vimclass/Exercise-08-TextObjects.pdf ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

得物App再迎开放日,全流程体验正品查验鉴别

近日&#xff0c;得物App超级品质保障中心再度迎来了开放日活动。近60位得物App的用户与粉丝齐聚超级品质保障中心&#xff0c;全流程体验正品查验鉴别。开放日当天&#xff0c;参与者有机会近距离观察得物App的商品质检区、鉴别区、收发流转区、实验室和正品库等关键功能区&am…

docker 部署 MantisBT

1. docker 安装MantisBT docker pull vimagick/mantisbt:latest 2.先运行实例&#xff0c;复制配置文件 docker run -p 8084:80 --name mantisbt -d vimagick/mantisbt:latest 3. 复制所需要配置文件到本地路径 docker cp mantisbt:/var/www/html/config/config_inc.php.…

【大语言模型】ACL2024论文-38 从信息瓶颈视角有效过滤检索增强生成中的噪声

【大语言模型】ACL2024论文-38 从信息瓶颈视角有效过滤检索增强生成中的噪声 目录 文章目录 【大语言模型】ACL2024论文-38 从信息瓶颈视角有效过滤检索增强生成中的噪声目录后记 《An Information Bottleneck Perspective for Effective Noise Filtering on Retrieval-Augment…

《火焰烟雾检测开源神经网络模型:智能防火的科技护盾》

一、火灾威胁与检测需求 火灾&#xff0c;始终是高悬在人类社会头顶的 “达摩克利斯之剑”&#xff0c;其带来的灾难后果触目惊心。根据国家消防救援局发布的数据&#xff0c;仅在 2024 年上半年&#xff0c;全国就接报火灾达 31.7 万起 &#xff0c;造成了 1173 人不幸遇难&am…

深入探究Linux树状目录结构

Linux 作为一款广泛使用的开源操作系统&#xff0c;其目录结构采用了树状设计&#xff0c;这种结构清晰、有条理&#xff0c;便于用户和系统进行文件管理与操作。 一、根目录&#xff08;/&#xff09; 根目录是整个 Linux 文件系统的起始点&#xff0c;就像一棵大树的根部&…

【C语言4】数组:一维数组、二维数组、变长数组及数组的练习题

文章目录 前言一、数组的概念二、一维数组2.1. 数组的创建和初始化2.2. 数组的类型2.3. 一维数组的下标2.4. 数组元素的打印和输入2.5. 一维数组在内存中的存储2.6. sizeof 计算数组元素个数 三、二维数组3.1. 二维数组的概念3.1. 二维数组的创建与初始化3.2. 二维数组的下标3.…

图论1-问题 C: 算法7-6:图的遍历——广度优先搜索

题目描述 广度优先搜索遍历类似于树的按层次遍历的过程。其过程为&#xff1a;假设从图中的某顶点v出发&#xff0c;在访问了v之后依次访问v的各个未曾被访问过的邻接点&#xff0c;然后分别从这些邻接点出发依次访问它们的邻接点&#xff0c;并使“先被访问的顶点的邻接点”先…

【今日分享】人工智能加速发现能源新材料的结构与性能

人工智能与材料国际学术会议(ICAIM)workshop9是由来自宁夏大学材料与新能源学院副院长王海龙教授及马薇副教授、杜鑫老师组成&#xff0c;他们将以“人工智能加速发现新能源新材料的结构与性能”为主题开展研讨工作&#xff0c;欢迎对该主题感兴趣的专家学者携稿加入。 loadin…

Docker拉取hello-world失败超时解决方法(配置多个镜源)

问题图片 解决方案 //创建目录 sudo mkdir -p /etc/docker //写入加速器配置 sudo tee /etc/docker/daemon.json <<-EOF "registry-mirrors": "https://do.nark.eu.org", "https://dc.j8.work", "https://docker.m.daocloud.io"…

[操作系统] 深入理解操作系统的概念及定位

概念 任何计算机系统都包含⼀个基本的程序集合&#xff0c;称为操作系统(OS)。 其核心功能如图片所示&#xff0c;包括&#xff1a; 内核 (Kernel)&#xff1a; 内核是操作系统的核心部分&#xff0c;被认为是狭义上的操作系统&#xff0c;直接与硬件打交道。负责进程管理、内…

某政务行业基于 SeaTunnel 探索数据集成平台的架构实践

分享嘉宾&#xff1a;某政务公司大数据技术经理 孟小鹏 编辑整理&#xff1a;白鲸开源 曾辉 导读&#xff1a;本篇文章将从数据集成的基础概念入手&#xff0c;解析数据割裂给企业带来的挑战&#xff0c;阐述数据集成的重要性&#xff0c;并对常见的集成场景与工具进行阐述&…

c#删除文件和目录到回收站

之前在c上遇到过这个问题&#xff0c;折腾许久才解决了&#xff0c;这次在c#上再次遇到这个问题&#xff0c;不过似乎容易了一些&#xff0c;亲测代码如下&#xff0c;两种删除方式都写在代码中了。 直接上完整代码&#xff1a; using Microsoft.VisualBasic.FileIO; using Sy…

数据合并与数据关联:数据处理中的核心操作

在数据分析和处理过程中&#xff0c;数据合并&#xff08;Data Merging&#xff09;和数据关联&#xff08;Data Association&#xff09;是两个非常重要的操作。它们分别用于整合不同数据集中的信息以及发现数据之间的潜在关系。 数据合并&#xff08;Data Merging&#xff0…

RK3576 Android14 状态栏和导航栏增加显示控制功能

问题背景&#xff1a; 因为RK3576 Android14用户需要手动控制状态栏和导航栏显示隐藏控制&#xff0c;包括对锁屏后下拉状态栏的屏蔽&#xff0c;在设置功能里增加此功能的控制&#xff0c;故参考一些博客完成此功能&#xff0c;以下是具体代码路径的修改内容。 解决方案&…

【初阶数据结构】序列系统重构:顺序表

文章目录 1.线性表2.顺序表2.1 概念及结构2.1.1 静态顺序表2.2.2 动态顺序表 2.2 接口实现2.2.1 顺序表打印2.2.2 顺序表初始化2.2.3 顺序表销毁2.2.4 顺序表容量检查2.2.5 顺序表尾插2.2.6 顺序表头插2.2.7 顺序表尾删2.2.8 顺序表头删2.2.9 顺序表在pos位置插入x2.2.10 顺序表…

Cosmos:英伟达发布世界基础模型,为机器人及自动驾驶开发加速!

1. 简介 在2025年消费电子展&#xff08;CES&#xff09;上&#xff0c;NVIDIA发布了全新的Cosmos平台&#xff0c;旨在加速物理人工智能&#xff08;AI&#xff09;系统的开发&#xff0c;尤其是自主驾驶车辆和机器人。该平台集成了生成式世界基础模型&#xff08;WFM&#x…

Fine Report连接Mysql数据库

点击 号 点击【数据库查询】 定义数据连接 数据库所在服务器的 IP 地址和端口号&#xff1b; 数据库的名称&#xff1b; 数据库的用户名和密码&#xff1b; 点击【测试连接】 编辑SQL语句 点击确定后&#xff0c;就会出现这张表的所有字段 注意&#xff1a; 一个sql语句对应…

国内汽车法规政策标准解读:GB 44495-2024《汽车整车信息安全技术要求》

目录 背景 概述 标准适用范围 汽车信息安全管理体系要求 ​​​​​​​信息安全基本要求 信息安全技术要求 ◆ 外部连接安全要求&#xff1a; ◆通信安全要求&#xff1a; ◆软件升级安全要求&#xff1a; ◆ 数据安全要求&#xff1a; 检查试验方法 同一型式判定…

我的年度总结

这一年的人生起伏&#xff1a;从曙光到低谷再到新的曙光 其实本来没打算做年度总结的&#xff0c;无聊打开了帅帅的视频&#xff0c;结合自己最近经历的&#xff0c;打算简单聊下。因为原本打算做的内容会是一篇比较丧、低能量者的呻吟。 实习生与创业公司的零到一 第一段工…

隧道IP广播与紧急电话系统:提升隧道安全的关键技术

隧道IP广播与紧急电话系统&#xff1a;提升隧道安全的关键技术 随着现代城市交通的迅猛发展&#xff0c;隧道作为重要的交通基础设施&#xff0c;其安全性与应急处理能力显得尤为重要。隧道IP广播与紧急电话系统作为保障隧道安全的关键技术&#xff0c;正发挥着越来越重要的作…