Vim常用命令

2023-09-15 16:48:12

1、复制(yank)选中的区域并粘贴(put)到另一个区域

在 Vim 中,复制和粘贴被称为 “yank” 和 “put”。以下是如何复制(yank)选中的区域并粘贴(put)到另一个区域的步骤:

  1. 进入可视模式并选择文本:

    • v 进入字符可视模式。然后移动光标选择文本。
    • V 进入行可视模式。这将选择整行。
    • CTRL + v 进入块可视模式。这允许我们选择一个矩形块。
  2. 复制选中的文本:

    在可视模式下,按 y(代表 “yank”)。这将复制选中的文本到 Vim 的寄存器。

  3. 移动到想要粘贴的位置:

    使用光标移动命令,如 h, j, k, l, w, b 等,移动到想要粘贴的位置。

  4. 粘贴文本:

    • p 在光标之后粘贴文本。
    • P 在光标之前粘贴文本。

这些是 Vim 中复制和粘贴的基本步骤。Vim 的寄存器系统非常强大,允许复制多段文本并按需粘贴。例如,"+y 将文本复制到系统剪贴板(这可能需要 Vim 与剪贴板支持一起编译),这样就可以在 Vim 外部的其他应用程序中粘贴了。

2、剪切选中区域并粘贴到另一个区域

在 Vim 中,“剪切” 的动作是通过 “删除” 来实现的,因为当删除文本时,Vim 实际上是将其放入一个寄存器中,从而使能够稍后粘贴它。以下是如何剪切选中区域并粘贴到另一个区域的步骤:

  1. 进入可视模式并选择文本:

    • v 进入字符可视模式。然后移动光标选择文本。
    • V 进入行可视模式。这将选择整行。
    • CTRL + v 进入块可视模式。这允许选择一个矩形块。
  2. 剪切选中的文本:

    在可视模式下,按 d(代表 “delete”)。这将删除选中的文本并将其放入 Vim 的寄存器。

  3. 移动到想要粘贴的位置:

    使用光标移动命令,如 h, j, k, l, w, b 等,移动到想要粘贴的位置。

  4. 粘贴文本:

    • p 在光标之后粘贴文本。
    • P 在光标之前粘贴文本。

这些是 Vim 中剪切和粘贴的基本步骤。正如我之前提到的,Vim 的寄存器系统非常强大,所以可以利用它实现许多复杂的文本操作。

3、撤销和回退更改

在 Vim 中,可以轻松地撤销和回退更改。以下是如何执行这些操作的方法:

  1. 撤销:

    • u 以撤销上一步的更改。在普通模式下,每次按 u 都会撤销上一步的操作。
  2. 多次撤销:

    • 在普通模式下,按数字然后 u。例如,3u 将撤销最近的三次更改。
  3. 重做(即撤销的撤销):

    • CTRL + r 以重做上一次被撤销的更改。每次按 CTRL + r 都会重做上一次被撤销的操作。
  4. 跳到某个更改:

    • Vim 记录所有更改历史。可以使用 :earlier:later 命令在时间线上前进和后退。
      • 例如,:earlier 5m 将会回到5分钟前的状态。
      • :later 5m 将会向前移动5分钟。
  5. 查看历史:

    • 使用 :undolist 命令可以查看一个历史的列表。这可以帮助我们了解做了哪些更改以及他们的顺序。

注意:尽管 Vim 提供了强大的撤销和历史跟踪功能,但最好还是经常保存文件,以防意外情况发生。

更多推荐

图像处理之频域滤波DFT

摘要:傅里叶变换可以将任何满足相应数学条件的信号转换为不同系数的简单正弦和余弦函数的和。图像信号也是一种信号,只不过是二维离散信号,通过傅里叶变换对图像进行变换可以图像存空域转换为频域进行更多的处理。本文主要简要描述傅里叶变换以及其在图像处理中的简单应用,并进行一些简单的实验来描述其相关性质。关键字:傅里叶变换,二维傅

JavaScript学习笔记03

JavaScript笔记03流程控制if判断和Java中if语句的使用方法相同。例:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><script>"usestrict";letscore=90;if(score==

11、Kubernetes核心技术 - Service

目录一、概述二、Endpoint三、Service资源清单四、Service类型4.1、ClusterIP4.2、NodePort4.3、LoadBalancer4.4、ExternalName五、Service使用5.1、ClusterIP5.1.1、定义Pod资源清单5.1.2、创建Pod5.1.3、定义Servi

【从零学习python 】74. UDP网络程序:端口问题与绑定信息详解

文章目录udp网络程序-端口问题UDP绑定信息总结进阶案例udp网络程序-端口问题在运行UDP网络程序时,会遇到端口号会变化的情况。每次重新运行网络程序后,可以观察到运行中的“网络调试助手”显示的数字是不同的。这是因为该数字标识了网络程序的唯一性,系统在重新运行时会随机分配端口号。需要注意的是,在网络程序运行过程中,该

如何从市场上几千只股票中快速选出满意的股票

个人账户实现股票量化程序化自动交易,券商有接口,门槛已降低_股票程序交易接口的博客-CSDN博客像上面的例子,如果按照市面上常见的可转债万3或万2不免5,人工操作+费率限制,这种情况就不要想,根本没机会,有了自动交易这把利器,再加python强大的支持库,能发挥的想像空间实在太大了,目前来看,机会是有,但后期用程序交易

【计算机网络 - 自顶向下方法】计算机网络和因特网

目录1.WhatistheInternet?1.1因特网的具体构成1.2因特网的功能2.Networkcore2.1基本介绍2.2分组交换2.2.1序列化时延2.2.2排队延迟和丢包2.2.3分组交换的优缺点2.3电路交换2.3.1基本概念2.3.2电路交换网络中的复用2.3.3电路交换文件传输时间2.3.4分组交换与

SpringBoot整合Redis,基于Jedis实现redis各种操作

前言(三步教你学会redis,主打一个实用)springboot整合redis步骤,并基于jedis对redis数据库进行相关操作,最后分享非常好用、功能非常全的redis工具类。第一步:导入maven依赖<!--springboot整合redis--><dependency><groupId>org.springfr

C++11的半同步半异步线程池

C++11的半同步半异步线程池简介同步队列Take函数Add函数Stop函数SyncQueue完整代码线程池主函数测试简介半同步半异步线程池用的比较多,实现也比较简单。其中同步层包括同步服务层和排队层,指的是将接收的任务排队,将所有的任务排队到一个队列中,等待处理;异步层指多个线程处理任务,异步处理层从同步层取出任务,

shell编程之循环

循环是当循环控制条件为真时,一系列命令迭代执行的代码块。1、for循环语法:forargin[list]这是shell中最基本的循环结构,它与C语言形式的循环有着明显的不同。forargin[list]docommand(s)...done在循环的过程中,arg会从list中连续获得每一个变量的值。forargin"$

深拷贝与浅拷贝,就是这么简单

目录1.拷贝的概念2.浅拷贝2.1.浅拷贝的定义2.2.浅拷贝的实现方式2.3在内存中:3.深拷贝3.1.深拷贝的定义3.2.深拷贝的实现方式3.3在内存中4.深拷贝与浅拷贝的区别5.原型模式与深浅拷贝的关系6.总结1.拷贝的概念在编程中,拷贝(或复制)是常见的操作之一。拷贝操作用于创建一个新对象或数据结构,使其具有与

Mybatis-Plus入门(1)

单表的CRUD功能代码重复度很高,也没有什么难度。而这部分代码量往往比较大,开发起来比较费时。因此,目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是MybatisPlus.官方网站如下:简介|MyBatis-Plus当然,MybatisPlus不仅仅可以简化单表操作,而且还

热文推荐