上一篇博客,讲了“新手”如何“入门”vi,解决了“两眼一抹黑”的情况。知道在vi下如何进行基本的操作,如部署在Linux下的项目,修改配置文件等。

传送门: 史上最简约的vi教程,10分钟包教会

本篇,我们继续vi的学习之旅,主要包括复制和粘贴操作。

1.移动光标

对于用惯了可视化开发工具的读者,初次接触vi学习门槛还是有一些的。虽然上篇文章说明了,可以通过小键盘的“上下左右”箭头移动光标,但,这个是一个“骚操作”。

vi推荐的做法是:在Normal模式下,通过h j k l来移动光标。

这个无需多言,打开vi,多操作几次就上手了。

当然还有高级的移动光标,暂且不表。

2.复制一行和粘贴

刚接触vi,我尝试过不止一次,ctrl + cctrl + v来“想当然”进行复制和粘贴,结果你懂的!

[注] 下面谈的所有操作,均在Normal模式下。

  • 复制

    复制当前行是最基本的操作,yy 这个大家基本上都熟悉。

  • 粘贴

    粘贴通过p(小写p)或者P(大写P,通过shift + p输入)来实现的。

    其中p是在光标所在行的下一行粘贴;P是在光标所在行的上一行粘贴。

  • 交换当前行和下(下)一行

    我们可以组合“删除”和“粘贴”操作,实现交换上下行的操作。

    ddp,可以实现交换当前行和下一行。

    请思考一下为什么?easy,dd是删除当前行,并复制到缓冲区,p是在当前行的下一行粘贴。

    ddP,可以实现交换当前行和上一行。

    请思考一下为什么?

3.个性化复制

第2部分介绍了复制和粘贴,基本上可以满足大部分的操作。“个性化”复制,怎么办?如复制一个单词,选定后复制...

  • 复制一个单词

    可以通过 yw 来说实现,这个前提是先将光标定位到单词的开头。

  • 复制到下一句的开始

    可以通过 y) 来说实现

  • 复制到下一段的开始

    可以通过 y} 来说实现

  • 快选择实现复制

    可以通过vshift + vctrl + v来进行区块选择,然后通过y进行复制。

    这基本上可以实现你想要的所有情况的复制。

    v 操作: 先输入v,然后“通过hjkl或者上下箭头移动光标”会自动选择一个区域。如果需要复制这个区域,则按y即可,如果要删除则输入d即可。

    shift + v是在v的操作基础上,不过其操作是行级别的。

    ctrl + v这个就是列选择,用过ultraedit或者editplus的列操作,你会爱不释手的。操作方法同v

4.总结

本篇博客是上篇博客的进阶,主要内容就是复制和粘贴。你需要知道的就是:

行操作: yy复制当前行,p粘贴到下一行;

块操作: 先输入v,然后“通过hjkl或者上下箭头移动光标”会选择一个区域。如果需要复制这个区域,则按 y 即可。移动光标到需要粘贴的目标处,p粘贴到光标所在处。

再次推荐vi教程:

掌握vi并不难,方法就是,“用”起来就会了。虽然我用的是windows 10系统,我开发中,vs code和IntelliJ IDEA、visual studio都启用了vi的。

史上最简约的vi教程,复制和粘贴的更多相关文章

  1. 史上最简单的vi教程,10分钟包教会

    从第一次接触vi/vim到现在已经十几年了,在这个过程中,来来回回,反反复复,学习vi很多次了. 虽然关于vi的使用,我还远未达到"专家"的水平,但对于vi的使用,我有话说. 1. ...

  2. 《史上最简单的MySQL教程》系列分享专栏

    <史上最简单的MySQL教程>系列分享专栏 <史上最简单的MySQL教程>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read ...

  3. 整理:史上最简单的 MySQL 教程

    1 前言 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成 ...

  4. Vue2.0史上最全入坑教程(下)—— 实战案例

    书接上文 前言:经过前两节的学习,我们已经可以创建一个vue工程了.下面我们将一起来学习制作一个简单的实战案例. 说明:默认我们已经用vue-cli(vue脚手架或称前端自动化构建工具)创建好项目了 ...

  5. [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例)

    [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例) 踏雁寻花 发表于 2015-8-23 23:31:28 https://www.itsk.com/thread-35 ...

  6. 史上最简单的 SpringCloud 教程

    史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)史上最简单的Spri ...

  7. 史上最简单的 SpringCloud 教程 | 终章

    https://blog.csdn.net/forezp/article/details/70148833转载请标明出处:http://blog.csdn.net/forezp/article/det ...

  8. 史上最简单的 GitHub 教程

    史上最简单的 GitHub 教程 温馨提示:本系列博文已经同步到 GitHub,如有需要的话,欢迎大家到「github-tutorial」进行Star和Fork操作! 1 简介 GitHub 是一个面 ...

  9. (转) 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

随机推荐

  1. P1072 城市轰炸

    题目描述 一个大小为N*M的城市遭到了X次轰炸,每次都炸了一个每条边都与边界平行的矩形. 在轰炸后,有Y个关键点,指挥官想知道,它们有没有受到过轰炸,如果有,被炸了几次,最后一次是第几轮. 输入格式 ...

  2. WPF 托盘显示

    本文告诉大家如何在 WPF 实现在托盘显示,同时托盘可以右击打开菜单,双击执行指定的代码 NotifyIcon WPF 通过 Nuget 安装 Hardcodet.NotifyIcon.Wpf 可以快 ...

  3. Linux数据对齐

    编写可移植代码而值得考虑的最后一个问题是如何存取不对齐的数据 -- 例如, 如何读取 一个存储于一个不是 4 字节倍数的地址的 4 字节值. i386 用户常常存取不对齐数据项, 但是不是所有的体系允 ...

  4. vue-learning:22 - js - directives

    directives 在讲解视图层指令时,我们讲到ref特性,使用它我们可以获取当前DOM元素对象,以便执行相关操作. <div id="app"> <input ...

  5. 【u035】奶牛的电信

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方 ...

  6. 【转载】VS Code 中的代码自动补全和自动导入包

    原文连接:https://maiyang.me/post/2018-09-14-tips-vscode/ VSCode 必须安装以下插件: 首先你必须安装 Golang 插件,然后再给 Go 安装工具 ...

  7. 浅解 go 语言的 interface(许的博客)

    我写了一个 go interface 相关的代码转换为 C 代码的样例.也许有助于大家理解 go 的 interface.不过请注意一点,这里没有完整解析 go 语言 interface 的所有细节. ...

  8. java中List 和 Set 的区别

    a. 特性 两个接口都是继承自Collection​,是常用来存放数据项的集合,主要区别如下:      ① List和Set之间很重要的一个区别是是否允许重复元素的存在,在List中允许插入重复的元 ...

  9. 正基AP6212固件

    需要正基技术资料联系我   QQ507014762  电话17666215391 #AP6212_NVRAM_V1.0.1_20160606 2.4 GHz, 20 MHz BW modeThe fo ...

  10. Java程序员必备:异常的十个关键知识点

    前言 总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油. 一. 异常是什么 异常是指阻止当前方法或作用域继续执行的问题.比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异 ...