【Vim Masterclass 笔记07】S05L19:Vim 剪切、复制、粘贴操作同步练习

news2025/1/7 12:01:53

文章目录

  • S05L19 Vim 剪切、复制、粘贴操作同步练习(Exercise 05 - Cut, Copy and Paste)
    • 1 训练目标
    • 2 操作指令
      • 2.1 打开 dyp.txt 文件
      • 2.2 交换文件的头两行
      • 2.3 将文件首行 put 到文件其他为止
      • 2.4 练习在光标位置的上方粘贴文本行
      • 2.5 通过交换字符顺序更正存在的笔误
      • 2.6 交换单词
      • 2.7 重复某一行
      • 2.8 重复某个单词
      • 2.9 使用数字寄存器(register)
      • 2.10 使用命名寄存器
      • 2.11 撤销与重做练习
    • 3 自由练习
    • 4 退出 Vim
  • S05L20 同步练习点评课(Exercises 05 - Cut, Copy and Paste - Walkthrough)

写在前面
本篇为第五章前两课内容(剪切复制粘贴+寄存器)的同步练习。全文已翻译成中文,方便快速回顾与练习。熟用 Vim 的关键在于大量的刻意练习。

S05L19 Vim 剪切、复制、粘贴操作同步练习(Exercise 05 - Cut, Copy and Paste)

1 训练目标

练习 Vim 中的剪切、复制、粘贴;熟悉 register 寄存器。1

2 操作指令

2.1 打开 dyp.txt 文件

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

cd Downloads
cd vimclass
vim dyp.txt

2.2 交换文件的头两行

首先,用 DD 删除文件首行。该行会进入默认寄存器。然后使用 p 命令将该行粘贴到新的这行下面。

操作前,这两行应该像这样:

This was originally the first line in the file.
This was originally the second line in the file.

操作后应该变为这样:

This was originally the second line in the file.
This was originally the first line in the file.

2.3 将文件首行 put 到文件其他为止

切记:默认寄存器的内容可以多次使用。将文件最初的首行放到这一行下面:

What was the first line in the file originally?  Place it below:

方法:先定位到这一行,然后按 P 执行 put 命令。

2.4 练习在光标位置的上方粘贴文本行

将最初的首行内容粘贴到这一行的上方:

What was the first line in the file originally?  Place it above:

方法:先定位到这一行,然后按下 Shift + P

2.5 通过交换字符顺序更正存在的笔误

光标定位到这一行的字母 e 上:

teh

交换 eh 的位置,让其变为 the。方法:输入 X 删除 e,然后输入 P 将其粘贴到紧挨当前光标后面的位置。

重复上述流程更正下面四行拼错或输错的内容:

psell = spell
vmi = vim
wrod = word
taht = that

2.6 交换单词

将如下这行由:

second, First, third.

变为:

First, second, third.

方法:光标移至行首位置、即单词 seconds 上;然后使用 dW 命令(注意 W 是大写形式)将该单词连同后面的逗号一并删除;再用 W 令光标移至单词 third 的开头位置;最后使用 Shift + P 在当前光标位置的前方粘贴默认寄存器内的文本内容。

2.7 重复某一行

重复下面这一行,并将其复制到它的下方:

Duplicate this line.

方法:光标定位到该行,使用 yy 将其 yank 到默认寄存器。接着使用 p 命令粘贴到该行的下方。

2.8 重复某个单词

重复下面这一行的单词 really, really,

I really, really, love vim!

方法:光标定位到第一个单词 really 的字母 r 上;再用 y2W 命令将这两个单词(包括标点)复制到默认寄存器;然后用 Shift + P 粘贴到当前光标的前方。此时这行文本应该变成这样:

I really, really, really, really, love vim!

2.9 使用数字寄存器(register)

将文本 TODO 粘贴到文件中所有以 Fix this 开头的文本行上方;同时,删除所有标注了 Delete this 的行;从光标当前位置开始,向下浏览文件,交替执行删除与粘贴操作。

方法:先用 yy 复制 TODO 那行文本;再用 2dd 删除两行标有 Delete this 的文本行;光标定位到含有 Fix this 的行,然后将 TODO 粘贴到它的上方。这一步需要用到 0 号寄存器中保存的上一次复制的文本,输入 "0P 即可。重复上述操作,直到所有以 Fix 开头的行上方都有一个 TODO、同时所有包含 Delete 的行都被删除。

2.10 使用命名寄存器

先将以下这行文本存到 "j 寄存器中:

Yank this line into the "j register.

方法:光标定位到该行任意位置,输入 "jyy

然后再将下面这行内容放入 "f 寄存器。

Yank this line into the "f register.

方法:光标定位到该行任意位置,输入 "fyy

然后使用命令 "jp,将 "j 寄存器中的内容粘贴到下面这行的下方:

Put the contents of the "j register below:

再用 "fp"f 寄存器中的文本内容粘贴到下面这一行的下方:

Put the contents of the "f register below:

将下面这行内容追加到 "j 寄存器内:

Append this line to the "j register.

方法:光标定位到该行任意位置,并输入命令 "Jyy(注意 J 为大写字母)。

再将下列一行文本追加到 "f 寄存器内:

Append this line to the "f register.

方法:光标定位到该行任意为止,输入命令 "Fyy(注意 F 为大写字母)。

使用 :reg + Enter 查看所有寄存器中的内容。例如查看 "j"f 寄存器,使用命令 :reg jf + Enter

然后使用 "jp 命令,将 "j 寄存器中的内容粘贴到下面这行文字的下方:

Put the contents of the "j register below:

接着,使用 "fp 命令,将 "f 寄存器中的内容粘贴到下面这行文字的下方:

Put the contents of the "f register below:

2.11 撤销与重做练习

删除以下三行内容:

ONE)
TWO)
THREE)

方法:光标定位到第一行,输入 3dd;使用 u 命令撤销删除;注意看三行内容是怎么还原的。

通过 Ctrl + R 重复执行刚才的删除命令,此时这三行又被重新删除。

向文件插入一个新行:先使用 i 命令进入插入模式;然后在 Vim 中输入一些句子,例如下面这句话:

Vim is fun!

按下 Escape 键返回正常模式。使用 u 命令撤销刚才输入的文本。然后使用 Ctrl + R 重新插入刚才的文本内容。

3 自由练习

鼓励自行尝试一些组合练习。最好是有个现成的文件需要修改,然后用 Vim 打开,用学到的删除、复制、粘贴去操作文件内容。

4 退出 Vim

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


S05L20 同步练习点评课(Exercises 05 - Cut, Copy and Paste - Walkthrough)

没有值得提炼的补充知识点。多思多练,熟能生巧。

练习题使用文件:vimclass/dyp.txt


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

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

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

相关文章

从零开始RTSP协议的实时流媒体拉流(pull)的设计与实现(一)

此文为系列文章,此系列主要讲解RTSP客户端的拉流及播放,文章持续更新,会从rtsp的基本协议讲起,如何一步步实现音视频的拉流过程,包括一系列涉及到的协议,rtsp,sdp, rtp(本…

量子力学复习

黑体辐射 热辐射 绝对黑体: (辐射能力很强,完全的吸收体,理想的发射体) 辐射实验规律: 温度越高,能量越大,亮度越亮 温度越高,波长越短 光电效应 实验装置&#xf…

如何排查 Apache Doris 中 “Failed to commit txn“ 导入失败问题?

今天来聊聊 Doris 数据导入那些事儿。你是不是在数据导入的时候遇到各种状况&#xff0c;让人头疼不已&#xff1f;别担心&#xff0c;这篇文章给你答案&#xff01; 在 Doris 的版本里&#xff0c;< 2.0.3 的时候&#xff0c;数据迁移存在一些已知的问题&#xff0c;比如可…

基于AT89C51单片机的可暂停八路抢答器设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/90196607?spm1001.2014.3001.5503 C15 部分参考设计如下&#xff1a; 摘要 随着社会进步和科技发展&#xff0c;电子设备在各类活动中的应用日益普遍&#xff0c…

OSCP - Proving Grounds - Pelican

主要知识点 当信息多的时候&#xff0c;耐心搜索Zookeeper exhibitor RCE漏洞 具体步骤 依旧执行Nmap Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-13 22:44 UTC Nmap scan report for 192.168.54.98 Host is up (0.00090s latency). Not shown: 65526 closed …

计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

WebRtc01:课程导学、框架介绍

应用 难点 课程大纲 学习收获 涉及内容 概述 用途 学习收获

特殊车辆检测数据集VOC+YOLO格式2730张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2730 标注数量(xml文件个数)&#xff1a;2730 标注数量(txt文件个数)&#xff1a;2730 …

【AI日记】25.01.04 kaggle 比赛 3-3 | 王慧玲与基层女性

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Forecasting Sticker Sales时间&#xff1a;6 小时 读书 书名&#xff1a;基层女性时间&#xff1a;3 小时原因&#xff1a;虽然我之前就知道这个作者&#xff0c;因为我…

电子应用设计方案85:智能 AI门前柜系统设计

智能 AI 门前柜系统设计 一、引言 智能 AI 门前柜系统旨在提供便捷、安全和智能的物品存储与管理解决方案&#xff0c;适用于家庭、公寓或办公场所的入口区域。 二、系统概述 1. 系统目标 - 实现无接触式物品存取&#xff0c;减少交叉感染风险。 - 具备智能识别和分类功能&am…

GOGOGO 抽象

抽象其实也算面向对象特征之一 抽象 含义&#xff1a;当多个子类中的共性向上提取&#xff0c;父类中不知道如何写具体实现&#xff0c;因为提取的共性并不一定能解决子类中实现的功能【同结构不一定同实现代码体】&#xff0c;就需要抽象概念 作用 父类只抽取结构&#xff…

【模型】Qwen2-VL 服务端UI

1. 前言 最近在测试VLM模型&#xff0c;发现官方的网页demo&#xff0c;代码中视频与图片分辨率可能由于高并发设置的很小&#xff0c;导致达不到预期效果&#xff0c;于是自己研究了一下&#xff0c;搞了一个简单的前端部署&#xff0c;自己在服务器部署了下UI界面&#xff0…

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案

IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案 问题描述 在IEEE PDF eXpress上上传论文后&#xff0c;出现Font XXX is not embedded的问题。 该问题是指你所插入的图片等&#xff0c;没有将对应的字体嵌入进去。 解决方案 以下以Origin Lab图片…

【Ubuntu】 Ubuntu22.04搭建NFS服务

安装NFS服务端 sudo apt install nfs-kernel-server 安装NFS客户端 sudo apt install nfs-common 配置/etc/exports sudo vim /etc/exports 第一个字段&#xff1a;/home/lm/code/nfswork共享的目录 第二个字段&#xff1a;指定哪些用户可以访问 ​ * 表示所有用户都可以访…

简易Type-C拉取5V/3A电流电路分享

今天介绍一种在Type-C 5V电压下获取3A电流的简易办法 我们都知道&#xff0c;USB里面的D D-用来传输数据&#xff0c;其实Type-C接口里面还有一组CC引脚&#xff0c;先科普一些概念 DFP&#xff0c;下行端口&#xff0c;可以理解为Host&#xff0c;数据下行以及对外提供电源&…

uni-app深度解码:跨平台APP开发的核心引擎与创新实践

在当今数字化浪潮中&#xff0c;移动应用市场呈现出爆炸式增长。为了满足不同用户群体在不同操作系统上的需求&#xff0c;跨平台 APP 开发成为众多开发者的首选策略。uni-app 作为一款领先的跨平台开发框架&#xff0c;以其独特的优势和创新的实践在众多同类产品中脱颖而出。它…

C#运动控制系统:雷赛控制卡实用完整例子 C#雷赛开发快速入门 C#雷赛运动控制系统实战例子 C#快速开发雷赛控制卡

雷赛控制技术 DMC系列运动控制卡是一款新型的 PCI/PCIe 总线运动控制卡。可以控制多个步进电机或数字式伺服电机&#xff1b;适合于多轴点位运动、插补运动、轨迹规划、手轮控制、编码器位置检测、IO 控制、位置比较、位置锁存等功能的应用。 DMC3000 系列卡的运动控制函数库功…

Spring Boot + Redis + Sa-Token

参考文献 Sa-Token实现分布式登录鉴权&#xff08;Redis集成 前后端分离&#xff09;-腾讯云开发者社区-腾讯云 介绍 StpInterface 是 Sa-Token 框架中的一个接口&#xff0c;属于 Sa-Token 身份认证与授权框架的一部分。该接口提供了一些方法来实现自定义的身份认证和授权管…

智慧工地信息管理与智能预警平台

建设背景与政策导向 智慧工地信息管理与智能预警平台的出现&#xff0c;源于工地管理面临的诸多挑战&#xff0c;如施工地点分散、危险区域多、监控手段落后等。随着政府对建筑产业现代化的积极推动&#xff0c;各地纷纷出台政策支持智慧工地的发展&#xff0c;旨在通过信息技…

GoF23种设计模式 简介

文章目录 面向对象(OO)设计原则&#xff08;7&#xff09;单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 创建型模式 &#xff08;5&#xff09;工厂方法模式 &#xff08;类模式&#xff0c;其余都是对象模式&#xff09;抽象工厂模式建造…