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

【Vim Masterclass 笔记08】第 6 章:Vim 中的文本变换及替换操作 + S06L20:文本的插入、变更、替换,以及合并操作

文章目录

  • Section 6:Transforming and Substituting Text
    • S06L21 Inserting, Changing, Replacing, and Joining
      • 1 定位到行首非空字符,并启用插入模式
      • 2 在紧挨光标的下一个字符位置启动插入模式
      • 3 定位到一行末尾,并启用插入模式
      • 4 定位到光标的下一行,并启用插入模式
      • 5 快速输入 80 个星号符
      • 6 在光标下方创建五行以 # 开头的行
      • 7 在光标下方创建四行以 IP 片段 10.11.12. 开头的行
      • 8 使用替换模式
      • 9 变更一个单词
        • 9.1 将 canine 快速替换为 cat
        • 9.2 将光标及后面的内容都删掉,并快速替换为其他内容
        • 9.3 变更一整行内容
      • 10 快速切换大小写
      • 11 将文字转为大写
      • 12 将文字转为小写
      • 13 合并多行

写在前面
本篇开始第 6 章的笔记梳理。对文本的这些变换操作,非常类似在 MS Word 中利用 CtrlShift 与四个方向键的组合。不过 Vim 的强大就在于它对文本进行了更细致的划分,无论是定位还是批量输入、批量替换,都比 Word 更高效。例如本节介绍的文本操作,看似微不足道,可一旦熟练应用了这些小技巧,实际工作中的效率提升就会十分可观。

Section 6:Transforming and Substituting Text


S06L21 Inserting, Changing, Replacing, and Joining

演示文件:vimclass/inserting.txt

本节介绍文本的插入、变更、替换,以及文本行的合并。

1 定位到行首非空字符,并启用插入模式

Shift + I:相当于 ^ + I

2 在紧挨光标的下一个字符位置启动插入模式

A

3 定位到一行末尾,并启用插入模式

Shift + A:表示 Append to the end of the line

4 定位到光标的下一行,并启用插入模式

O

若要定位到上一行并启用插入模式,则使用 Shift + O

5 快速输入 80 个星号符

80I* + Esc

6 在光标下方创建五行以 # 开头的行

5O# + Esc

适用场景:快速注释配置文件或 Shell 脚本。

7 在光标下方创建四行以 IP 片段 10.11.12. 开头的行

4O + 10.11.12. + Esc

实测效果:

img1

8 使用替换模式

开启方式:Shift + R(按 Esc 返回常规模式)

注意:若 只有一个字符 需要替换,则使用小写的 R 即可,替换完毕将自动返回常规模式。

9 变更一个单词

使用 c 命令(表 change),格式为:["x]c{motion}

9.1 将 canine 快速替换为 cat

方法:光标定位到字母 c,按 CW + cat + Esc

发散:将 canine 同时存入寄存器 "a:输入 "A + CW + cat + Esc

9.2 将光标及后面的内容都删掉,并快速替换为其他内容

例如将 car 及后面的内容都替换为 mouse:光标先定位到字母 c,然后按 C$ + mouse + Esc

类比 d 命令,C$ 也可以等效使用 Shift + C

9.3 变更一整行内容

使用 CC(联想 DD

10 快速切换大小写

使用 ~:将光标处的单个字母从小写变为大写,或从大写变为小写。

切换当前单词的大小写:按 G~W(语法:g~{motion}

切换当前行所有字符的大小写,方法为:

  1. 光标定位到行首;
  2. G~$

类比 d 命令和 c 命令,这里的 G~$ 也等效于 G</kbd><kbd>

11 将文字转为大写

语法格式:gU{motion}UUpper 的首字母)

例如,将当前单词转为大写:G + (Shift + U)+ W

将整行内容大写:使用命令 gUU(两个 U 都是大写形式)

12 将文字转为小写

语法格式:gu{motion}(大写为 U,小写自然为 u

将整行内容小写:使用命令 guu(两个 u 都是小写形式)

13 合并多行

使用 Shift + J:用于合并光标所在行及下一行,并智能补足一个或两个空格。

关于合并后 Vim 的智能空格补足机制:

首行的末尾Vim 补充空格数
既没有 .、又没有空格1
. 结尾2
.<Space> 结尾1
.<Space><Space> 结尾(即自带两个及以上空格)0

如果不希望 Vim 自动补空格,使用 gJ 命令。

合并包含光标在内的余下三行:3 +(Shift + J)(即 3J 命令)

相关文章:

【Vim Masterclass 笔记08】第 6 章:Vim 中的文本变换及替换操作 + S06L20:文本的插入、变更、替换,以及合并操作

文章目录 Section 6&#xff1a;Transforming and Substituting TextS06L21 Inserting, Changing, Replacing, and Joining1 定位到行首非空字符&#xff0c;并启用插入模式2 在紧挨光标的下一个字符位置启动插入模式3 定位到一行末尾&#xff0c;并启用插入模式4 定位到光标的…...

Tailwind CSS 实战:动画效果设计与实现

在现代网页设计中,动画效果就像是一位优秀的舞者,通过流畅的动作为用户带来愉悦的视觉体验。记得在一个产品展示网站项目中,我们通过添加精心设计的动画效果,让用户的平均停留时间提升了 35%。今天,我想和大家分享如何使用 Tailwind CSS 打造优雅的动画效果。 设计理念 设计动…...

【动手学电机驱动】STM32-MBD(3)Simulink 状态机模型的部署

STM32-MBD&#xff08;1&#xff09;安装 Simulink STM32 硬件支持包 STM32-MBD&#xff08;2&#xff09;Simulink 模型部署入门 STM32-MBD&#xff08;3&#xff09;Simulink 状态机模型的部署 【动手学电机驱动】STM32-MBD&#xff08;3&#xff09;Simulink 状态机模型部署…...

Linux 服务器启用 DNS 加密

DNS 加密的常用协议包括 DNS over HTTPS (DoH)、DNS over TLS (DoT) 和 DNSCrypt。以下是实现这些加密的步骤和工具建议&#xff1a; 1. 使用 DoH (DNS over HTTPS) 工具推荐&#xff1a; cloudflared&#xff08;Cloudflare 提供的客户端&#xff09;doh-client&#xff08;…...

PyTorch不同优化器比较

常见优化器介绍 - SGD&#xff08;随机梯度下降&#xff09;&#xff1a;是最基本的优化器之一&#xff0c;通过在每次迭代中沿着损失函数的负梯度方向更新模型参数。在大规模数据集上计算效率高&#xff0c;对于凸问题和简单模型效果较好。但收敛速度慢&#xff0c;容易陷入局…...

stm32的掉电检测机制——PVD

有时在一些应用中&#xff0c;我们需要检测系统是否掉电了&#xff0c;或者要在掉电的瞬间需要做一些处理。 STM32内部自带PVD功能&#xff0c;用于对MCU供电电压VDD进行监控。 STM32就有这样的掉电检测机制——PVD(Programmable Voltage Detecter)&#xff0c;即可编程电压检…...

Nginx 文件名逻辑漏洞(CVE-2013-4547)

目录 漏洞原理 影响版本 漏洞复现 漏洞原理 CGI&#xff1a;是一种协议&#xff0c;定义了web服务器传递的数据格式。 FastCGI&#xff1a;优化版的CGI程序 PHP-CGI&#xff1a;PHP解释器&#xff0c;能够对PHP文件进行解析并返回相应的解析结果 PHP-FPM&#xff1a;Fas…...

Java 21 优雅和安全地处理 null

在 Java 21 中,判断 null 依然是开发中常见的需求。通过使用现代 Java 提供的工具和特性,可以更加优雅和安全地处理 null。 1. 使用 Objects.requireNonNull Objects.requireNonNull 是标准的工具方法,用于快速判断并抛出异常。 示例 import java.util.Objects;public c…...

AWS Glue基础知识

AWS Glue 是一项完全托管的 ETL&#xff08;提取、转换、加载&#xff09;服务&#xff0c;与考试相关&#xff0c;尤其是在数据集成、处理和分析方面。 1.数据集成和 ETL&#xff08;提取、转换、加载&#xff09; AWS Glue 主要用于构建 ETL 管道以准备数据以进行分析。作为…...

Kubernetes——part4-1 Kubernetes集群 服务暴露 Nginx Ingress Controller

Kubernetes集群 服务暴露 Nginx Ingress Controller 一、ingress控制器 1.1 ingress控制器作用 &#xff08;类似于slb&#xff0c;做代理服务&#xff09; ingress controller可以为kubernetes 集群外用户访问Kubernetes集群内部pod提供代理服务。 提供全局访问代理访问流程…...

Flutter入门,Flutter基础知识总结。

Flutter是Google推出的一种移动应用开发框架&#xff0c;它允许开发者使用一套代码库同时开发Android和iOS应用。以下是对Flutter知识点的详细总结&#xff1a; 一、Flutter概述 特点&#xff1a;跨平台、高保真、高性能。 编程语言&#xff1a;使用Dart语言编写。 设计理念&…...

weight decay 和L2是一个东西吗

weight decay和L2正则化本质上是相同的概念。 weight decay&#xff08;权重衰减&#xff09;和L2正则化在深度学习中都是用来防止模型过拟合的常用技术。它们通过对损失函数添加一个正则项来限制模型参数的大小&#xff0c;从而控制模型的复杂度。具体来说&#xff0c;L2正则…...

JavaScript系列(8)-- Array高级操作

JavaScript Array高级操作 &#x1f4da; 在前七篇文章中&#xff0c;我们探讨了JavaScript的语言特性、ECMAScript标准、引擎工作原理、数值类型、字符串处理、Symbol类型和Object高级特性。今天&#xff0c;让我们深入了解JavaScript中的Array高级操作。数组是最常用的数据结…...

Harmony开发【笔记1】报错解决(字段名写错了。。)

在利用axios从网络接收请求时&#xff0c;发现返回obj的code为“-1”&#xff0c;非常不解&#xff0c;利用console.log测试&#xff0c;更加不解&#xff0c;可知抛出错误是 “ E 其他错误: userName required”。但是我在测试时&#xff0c;它并没有体现为空&#xff0c;…...

MAC环境安装(卸载)软件

MAC环境安装&#xff08;卸载&#xff09;软件 jdknode安装node&#xff0c;并实现不同版本的切换背景 卸载node从node官网下载pkg安装的node卸载用 homebrew 安装的node如果你感觉删的不够干净&#xff0c;可以再细分删除验证删除结果 在macOS下创建home目录 jdk 1.下载jdk 先…...

【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习(L14+L15+L16)

文章目录 Section 4&#xff1a;The Vim Help System&#xff08;Vim 帮助系统&#xff09;S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…...

Multisim更新:振幅调制器+解调器(含仿真程序+文档+原理图+PCB)

前言 继3年前设计的&#xff1a;Multisim&#xff1a;振幅调制器的设计&#xff08;含仿真程序文档原理图PCB&#xff09;&#xff0c;有读者表示已经不能满足新需求&#xff0c;需要加上新的解调器功能&#x1f602;&#x1f602;&#x1f602;&#xff0c;鸽了很久这里便安排…...

CentOS — 群组管理

文章目录 一、查看群组二、添加群组三、删除群组四、修改群组 Linux 系统中每个用户都属于一个特定的群组。 若不设置用户的群组&#xff0c;默认会创建一个和用户名一样的群组&#xff0c;并将用户分到该群组。 一、查看群组 groups 用户名&#xff1a;查看用户所属群组。 二…...

【pytorch】注意力机制-1

1 注意力提示 1.1 自主性的与非自主性的注意力提示 非自主性提示&#xff1a; 可以简单地使用参数化的全连接层&#xff0c;甚至是非参数化的最大汇聚层或平均汇聚层。 自主性提示 注意力机制与全连接层或汇聚层区别开来。在注意力机制的背景下&#xff0c;自主性提示被称为查…...

html 元素中的data-v-xxxxxx 是什么?为什么有的元素有?有的没有?

data-v-xxxxxx 在 HTML 中&#xff0c;data-v 属性通常与 Vue.js 或其他前端框架一起使用&#xff0c;特别是当这些框架结合 CSS 预处理器&#xff08;如 Sass、Less&#xff09;和单文件组件&#xff08;Single File Components, SFCs&#xff09;时。data-v 属性的主要目的是…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...