【Vim Masterclass 笔记19】S08L36 + L37:第八章 Vim 可视化模式同步练习(含点评课内容)

embedded/2025/1/20 18:49:23/

文章目录

  • S08L36 Exercise 10 - Visual Mode
    • 1 训练目标
    • 2 操作指令
      • 2.1. 打开 visual-practice.txt 文件
      • 2.2. 字符级可视化模式练习 Characterwise Visual Mode
      • 2.3. 文本行可视化模式练习 Linewise Visual Mode
      • 2.4. 区块级可视化模式练习 Blockwise Visual Mode
    • 3 退出 Vim
  • S08L37 Exercise 10 - Visual Mode - Walkthrough

写在前面
千里之行始于足下,不知不觉中已经整理了八个章节的内容。最近更新笔记也明显感觉到速度有所放缓,这既说明当前这部分内容我还没有熟练掌握,同时也说明眼下所做的工作是十分有必要的——因为 Learning is a painful process。现在越来越不相信寓教于乐的谎言了,我只相信点点滴滴地用心付出,相信耐心倾注时间和精力的神奇力量。一旦掌握了 Vim 的 visual mode,不仅可以忽略鼠标的存在,还可以告别对 ShiftCtrl 这两个批量编辑必备功能键的重度依赖(想想 notepad++、SublimeText 批量编辑的各种组合键),简直不要太爽。


S08L36 Exercise 10 - Visual Mode

1 训练目标

熟悉 Vim 可视化模式的各种用法。1

2 操作指令

2.1. 打开 visual-practice.txt 文件

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

cd Downloads
cd vimclass
vim visual-practice.txt

2.2. 字符级可视化模式练习 Characterwise Visual Mode

试将 =><= 之间的文字内容用字符级视觉模式删除。这是删除前的原始版本:

Use characterwise visual mode to delete this => DELETE ME, DELETE ME, Yes!!! <=

删除后变为:

Use characterwise visual mode to delete this =><=

具体实现:先将光标定位到单词 DELETE 前的空格位置,例如使用 tD 实现。然后键入 V 进入字符级可视化模式,并通过输入 L、或者 W、或者使用正向查找 / 定位到 < 之前的字符,具体方式自行确定,只要不选中 < 即可。最后键入 D 实现文字删除。

下一个练习,要求将第 3 行的句子 Yank this sentence. 存入未命名寄存器。注意不要包含该句后面的空格。具体实现:先将光标定位到这句话的任意位置(例如输入 JJ0 将光标定位到该句开头);然后键入 YIS 实现复制。这里的 yis 表示仅复制句子内容本身。

要查看未命名寄存器中的内容,可输入命令 :reg " + Enter。内容如下:

"" Yank this sentence.

2.3. 文本行可视化模式练习 Linewise Visual Mode

试将下列文字通过 Vim 的行级可视化模式合并为一行:

This entire paragraph should be on the same line.
But it isn't!
I don't know who typed this, but they didn't do a
very
good
job.
Did they?

最终效果:

This entire paragraph should be on the same line.  But it isn't!  I don't know who typed this, but they didn't do a very good job.  Did they?

(注意:只要显示器不够大,一行文字就很可能会折行。此时可以通过 :set nu + Enter 命令显示行号来判定这段文本是否属于同一行)

为此,需要先将光标定位到如下所示的第一行的任意位置:

This entire paragraph should be on the same line.

然后输入 ShiftV 进入行级可视化模式;键入 IP 选中整个段落,这里的 ip 表示 内部段落(inner paragraph)。最后,输入 ShiftJ 完成文本连接操作。

下一个练习,需要利用 Vim 的可视化模式将下列文字内容居中排列:

##############################################################################
Header
Description
##############################################################################

使其变为以下效果:

##############################################################################HEADERDESCRIPTION
##############################################################################

实现方法:先将光标定位到 Header 这一行,然后按 ShiftV 启用行级可视化模式;键入 J 让光标下移一行,并输入 ShiftU 将选中内容全部转为大写;再按 GV 重新选中这些文本行,输入命令 :center + Enter 实现文字居中。

2.4. 区块级可视化模式练习 Blockwise Visual Mode

试用 Vim 的区块级可视化模式,对如下文字进行批量操作:

Rank,Item
"001","Q-Tips"
"002","Paper Towels"
"003","Toilet Paper"
"004","Liquid Detergent"
"005","Mouthwash"
"006","Cereal"
"007","Bottled Water"

使其最终变为:

Rank,Item
1,"Q-Tips"
2,"Paper Towels"
3,"Toilet Paper"
4,"Liquid Detergent"
5,"Mouthwash"
6,"Cereal"
7,"Bottled Water"

为此,先将光标定位到如下这行的开头位置:

"001","Q-Tips"

接着输入 CtrlV 启用块级可视化模式 2。键入 L 选中开头两列,然后下移光标到 "007","Bottled Water" 这行(具体可通过按六次 J 键实现);接着按 DX 删除高亮选中的文本。此时 Vim 回到正常模式(normal mode)。

L 将光标右移一列,并输入 CtrlV 再次进入块级可视化模式;再次键入六次 J 键将光标下移至 7","Bottled Water" 这行,按 DX 键完成删除操作。

下一个练习,要求用块级可视化模式,在下列每行文字的开头插入 # 字样。

改动前的原始版本如下:

This is a comment.
So is this.
Why, this is also a comment.
Please, comment us out!

改动后要变为:

# This is a comment.
# So is this.
# Why, this is also a comment.
# Please, comment us out!

为此,先将光标定位到 This is a comment. 这行的 T 字符上,并按 CtrlV 进入块级可视化模式;接着输入 JJJ 高亮选中后三行的首字符。最后通过输入 ShiftI + #Space + Escape,完成 # 字样的插入。

接着,在改好的文字基础上,在实现另一个练习效果。也就是将刚才的操作结果:

# This is a comment.
# So is this.
# Why, this is also a comment.
# Please, comment us out!

再改为下列版本:

" This is a comment.
" So is this.
" Why, this is also a comment.
" Please, comment us out!

注意:双引号标记的内容在 vimrc 文件中代表注释信息。

GV 快速重新选中刚才的高亮区域,再按 C" + Escape# 批量改为 "

最后一个练习项目,需要再用 Vim 的块级可视化模式,在如下内容的每行末尾分别添加 # EOL 字样:

>
>>>
>>>>>
>>>>>>>
>>>>>>>>>>
>>>>>>>
>>>>>
>>>>
>

使其最终变为:

> # EOL
>>> # EOL
>>>>> # EOL
>>>>>>> # EOL
>>>>>>>>>> # EOL
>>>>>>> # EOL
>>>>> # EOL
>>>> # EOL
> # EOL

为此,先将光标定位到文本区首行首列(可通过 27gg 实现);然后按 CtrlV 开启块级可视化模式,并按八次 J 键选中整个文本块的首列;接着键入 $ 来选中各行其余文本。最后按 ShiftA 批量添加文字,输入 Space + # EOL + Escape 即可。

3 退出 Vim

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


S08L37 Exercise 10 - Visual Mode - Walkthrough

本节为同步练习点评课。视频漏掉了将注释标记由 # 批量改为 " 的扩展练习,也没有需要特别补充的知识点。

这里仅列出实测过程中的几个问题:

  1. 第一个小练习中不能使用尖括号对应的文本对象,因为要删除的内容不在一对完整的 <> 内,而是 >< 内。
  2. Windows 系统下的光标不是闪烁的矩形,而是一条竖直的细线。它默认选中的字符位于该细线的 右侧,执行 d 命令时会一并删除。
  3. Vim 行号的另一个用法,在于验证某段文字内容是否位于同一行内。
  4. 深度关注批量操作的特点:块级可视化模式下,无论是在每行行首还是行尾批量插入文字内容,均要用大写的 IA 进入插入模式;实际编辑虽然只会实时显示第一行的编辑情况,但键入 Escape 后,Vim 会自动补全其余行的内容(这可能也是为了降低多行同时渲染带来的性能损耗吧)。

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

  2. 为避免和系统内置的粘贴快捷键相冲突,对于 Windows 版本的 Vim,块级可视化模式通过 Ctrl + Q 开启;而在 WSL 环境下 Ubuntu 系统中的 Vim,则需要通过 Ctrl + Alt + V 来启动。 ↩︎


http://www.ppmy.cn/embedded/155552.html

相关文章

Micrometer+Zipkin 分布式链路追踪

MicrometerZipkin 分布式链路追踪&#xff08;Distributed Tracing&#xff09;是一种用于监控和分析分布式系统性能的技术。它允许开发人员和运维人员追踪请求在分布式系统中的传播路径&#xff0c;包括跨服务调用、数据库访问、缓存查询等操作。通过分布式链路追踪&#xff0…

Ubuntu 24.04 LTS 空闲硬盘挂载到 文件管理器的 other locations

Ubuntu 24.04 LTS 确认硬盘是否被识别 使用 lsblk 查看信息&#xff0c;其中sda这个盘是我找不到的&#xff0c;途中是挂在好的。 分区和格式化硬盘 如果新硬盘没有分区&#xff0c;你需要先分区并格式化它。假设新硬盘为 /dev/sdb&#xff0c;使用 fdisk 或 parted 对硬盘…

Spring Boot——日志介绍和配置

1. 日志的介绍 在前面的学习中&#xff0c;控制台上打印出来的一大堆内容就是日志&#xff0c;可以帮助我们发现问题&#xff0c;分析问题&#xff0c;定位问题&#xff0c;除此之外&#xff0c;日志还可以进行系统的监控&#xff0c;数据采集等 2. 日志的使用 在程序中获取日…

动态主机配置协议 (DHCPv4)介绍,详细DHCP协议学习笔记

定义 动态主机配置协议 (DHCP) 是一种用于集中对用户 IPv4 地址进行动态管理和配置的技术。为与 IPv6 动态主机配置协议 (DHCPv6) 进行区分&#xff0c;本文统一将动态主机配置协议称为 DHCPv4。 DHCPv4 协议由 RFC 2131 定义&#xff0c;采用客户端/服务器通信模式&#xff…

Go语言strings包与字符串操作:从基础到高级的全面解析

Go语言strings包与字符串操作:从基础到高级的全面解析 引言 Go语言以其简洁、高效和强大的标准库而闻名,其中strings包是处理字符串操作的核心工具。本文将深入探讨Go语言中strings包的功能及其在实际开发中的应用,帮助开发者更好地理解和使用这一工具。 1. strings包概述…

三维扫描赋能文化:蔡司3D扫描仪让木质文化遗产焕发新生-沪敖3D

挪威文化历史博物馆在其修复工作中融入现代3D扫描技术&#xff0c;让数百年的历史焕发新生。 文化历史博物馆的工作 文化历史博物馆是奥斯陆大学的一个院系。凭借其在文化历史管理、研究和传播方面的丰富专业知识&#xff0c;该博物馆被誉为挪威博物馆研究领域的领先机构。馆…

jenkins-系统配置概述

一. 引文&#xff1a; Jenkins除了强大的功能插件实现的持续交付集成外&#xff0c; 本身也是有一些比较重要的可配项。 接下来我们来看一看。 配置入口: 系统管理-->系统设置 二. 基础配置&#xff1a; 1.主目录(home directory): Jenkins所有的数据文件存放路径(可通过…

HTML5+Canvas实现的鼠标跟随自定义发光线条源码

源码介绍 HTML5Canvas实现的鼠标跟随自定义发光线条特效源码非常炫酷&#xff0c;在黑色的背景中&#xff0c;鼠标滑过即产生彩色变换的发光线条效果&#xff0c;且线条周围散发出火花飞射四溅的粒子光点特效。 效果预览 源码如下 <!DOCTYPE html PUBLIC "-//W3C//D…