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

文章目录

  • 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.mzph.cn/bicheng/66408.shtml

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

相关文章

【Rust自学】10.6. 生命周期 Pt.2:生命周期的语法与例子

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 10.6.1. 生命周期标注语法 生命周期的标注并不会改变引用的生命周期长度。如果某个函数它制定了泛型生命周期参数,那么它就可…

HTML 显示器纯色亮点检测工具

HTML 显示器纯色亮点检测工具 相关资源文件已经打包成html等文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Html相关程序案例,秉着开源精神的想法,望大家喜欢&#…

晨辉面试抽签和评分管理系统之一:考生信息管理和编排

晨辉面试抽签和评分管理系统(下载地址:www.chenhuisoft.cn)是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…

PHP7和PHP8的最佳实践

php 7 和 php 8 的最佳实践包括:使用类型提示以避免运行时错误;利用命名空间组织代码并避免命名冲突;采用命名参数、联合类型等新特性增强可读性;用错误处理优雅地处理异常;关注性能优化,如避免全局变量和选…

Vue 项目自动化部署:Coding + Jenkins + Nginx 实践分享

前言 本文详细记录如何使用 Coding (以 Jenkinsfile 为核心) 和 Nginx 部署 Vue 项目,包含完整流程、配置细节及注意事项,为开发者提供一个高效的实践参考。 准备工作 这里借用一个优秀的开源项目做演示:芋道源码/yudao-ui-admin-vue2。 以…

基于Arduino的FPV头部追踪相机系统

构建FPV头部追踪相机:让你置身于遥控车辆之中! 在遥控车辆和模型飞行器的世界中,第一人称视角(FPV)体验一直是爱好者们追求的目标。通过FPV头部追踪相机,你可以像坐在车辆或飞行器内部一样,自由…

【QT-QTableView实现鼠标悬浮(hover)行高亮显示+并设置表格样式】

1、自定义委托类 HoverDelegate hoverdelegate.h #ifndef HOVERDELEGATE_H #define HOVERDELEGATE_H#include <QObject> #include <QStyledItemDelegate>class hoverdelegate : public QStyledItemDelegate {Q_OBJECT // 添加 Q_OBJECT 宏public:explicit hoverde…

企业网络性能监控

什么是网络性能监控 网络性能监控&#xff08;NPM&#xff09;是指对计算机网络的性能进行持续测量、分析和管理的过程&#xff0c;通过监控流量、延迟、数据包丢失、带宽利用率和正常运行时间等关键指标&#xff0c;确保网络高效、安全地运行&#xff0c;并将停机时间降至最低…

【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 关于退…

Zookeeper是如何解决脑裂问题的?

大家好&#xff0c;我是锋哥。今天分享关于【Zookeeper是如何解决脑裂问题的?】面试题。希望对大家有帮助&#xff1b; Zookeeper是如何解决脑裂问题的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper 通过一系列的机制来防止和解决脑裂&#xff08;sp…

【C++】const关键字_运算符重载_继承

目录 Const关键字 常量 常量指针 参数传递 返回值 成员函数 const作用域 运算符重载 继承 继承同名静态成员函数 构造和析构的调用顺序 多重继承 菱形继承&#xff08;二义性&#xff09; 虚继承的工作原理 友元 常&#xff08;成员&#xff09;函数 Const关键字…

Java(day4)

二维数组 静态初始化 动态初始化 练习 public class test1 {public static void main(String[]args){int arr[][]{{22,66,44},{77,33,88},{25,45,65},{11,66,99}};int sum0;for(int i0;i<arr.length;i){int a0;for(int j0;j<arr[i].length;j){sumarr[i][j];aarr[i][j];…

「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统

本篇教程将实现一个模拟火车票查询系统&#xff0c;通过输入条件筛选车次信息&#xff0c;并展示动态筛选结果&#xff0c;学习事件处理、状态管理和界面展示的综合开发技巧。 关键词 条件筛选动态数据展示状态管理UI交互查询系统 一、功能说明 模拟火车票查询系统包含以下功…

Cherno C++学习笔记 P50 C++当中的动态库

在上一篇文章当中我们学习了C当中是如何使用静态库的&#xff0c;这一篇我们会讲一下如何使用动态库&#xff0c;并同样用GLFW这个已有的库来举例子。 有了静态库的经验&#xff0c;其实动态库就好理解和使用多了。这两者的区别是&#xff0c;静态链接发生在编译的时候&#x…

Linux-Ubuntu之裸机驱动最后一弹PWM控制显示亮度

Linux-Ubuntu之裸机驱动最后一弹PWM控制显示亮度 一&#xff0c; PWM实现原理二&#xff0c;软件实现三&#xff0c;正点原子裸机开发总结 一&#xff0c; PWM实现原理 PWM和学习51时候基本上一致&#xff0c;控制频率&#xff08;周期&#xff09;和占空比&#xff0c;51实验…

1.Python浅过(语法基础)

1.简介 Python是一种面向对象的解释型高级编程语言&#xff0c;是强类型的动态脚本语言。 解释型语言跨平台性比编译型语言&#xff08;如c语言&#xff09;好。 print("hello world")2.Bug,Debug 多看&#xff0c;多思考&#xff0c;多尝试、查资料、记录 3.prin…

Flutter:邀请海报,Widget转图片,保存相册

记录下&#xff0c;把页面红色区域内的内容&#xff0c;转成图片后保存到相册的功能 依赖 # 生成二维码 qr_flutter: ^4.1.0 # 保存图片 image_gallery_saver_plus: ^3.0.5view import package:demo/common/index.dart; import package:ducafe_ui_core/ducafe_ui_core.dart; i…

JVM实战—12.OOM的定位和解决

大纲 1.如何对系统的OOM异常进行监控和报警 2.如何在JVM内存溢出时自动dump内存快照 3.Metaspace区域内存溢出时应如何解决(OutOfMemoryError: Metaspace) 4.JVM栈内存溢出时应如何解决(StackOverflowError) 5.JVM堆内存溢出时应该如何解决(OutOfMemoryError: Java heap s…

科研绘图系列:R语言单细胞数据常见的可视化图形

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理图1图2图3图4图5图6系统信息参考介绍 单细胞数据常见的可视化图形 因为本教程是单细胞数据,因此运行本画图脚本需要电脑的内存最少32Gb 加载…

公共数据授权运营机制建设(六大机制、存在问题、发展路径)

前言在国家战略部署下&#xff0c;学界和各地方政府从理论和实践两个层面积极探索公共数据授权运营机制。本期将从学理上剖析公共数据授权运营的基本内容&#xff0c;说明公共数据授权运营到底包括哪些内容&#xff0c;并且举例说明各地在公共数据授权运营机制建设方面的典型经…