当前位置: 首页 > 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 属性的主要目的是…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

SpringAI实战:ChatModel智能对话全解

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

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...