当前位置: 首页 > news >正文

Linux CentOS7 vim寄存器

计算机中通常所说的寄存器Register一般指的是CPU中的寄存器,用来暂存CPU处理所需要的指令、数据等。

vim中同样也有寄存器,使用的方式和CPU非常类似。

vim中的寄存器(register)作用和windows中的剪切板类似,不过vim中的寄存器不止一个,有不同的类别,有不同的用处。

vim的寄存器是一组用于保存文本的简单容器。它们既可像剪贴板那样,剪切、复制和粘贴文本;也可以记录一系列按键操作,把它们录制成宏。

vim常规使用系统剪贴板进行剪切、复制与粘贴操作,如果再运用寄存器手段,将为删除、复制与粘贴等操作提供更多选择在,而更具灵活性,同时也提高了编辑文本效率。

一、认识寄存器        

vim的寄存器可以看成vim中额外用来存储信息的区域,虽然看不见,但是如果使用x、s、y、p等命令,都无意识的使用了vim的寄存器。

你可能已经在复制或删除文本并用p或P粘贴它们到别处的时候使用过Vim的寄存器了。但是,你知道Vim总共有10种不同类型的寄存器吗?如果正确地使用Vim寄存器,将帮助您从重复的输入中解放出来。

总的来说,寄存器就是一个可自定义的多重剪切板,超级剪切板。

1.寄存器分类

vim所拥有的10种寄存器类型:

  1. 匿名寄存器("")
  2. 编号寄存器("0-9)
  3. 小删除寄存器("-)
  4. 命名寄存器("a-z)
  5. 只读寄存器(":,".,"%)
  6. Buffer交替文件寄存器("#)
  7. 表达式寄存器("=)
  8. 选取和拖放寄存器("*,"+)
  9. 黑洞寄存器("_)
  10. 搜索模式寄存器("/)

2.寄存器作用与功能

常用的有匿名寄存器("")和命名寄存器("a-z)。

匿名寄存器""

匿名寄存器,又常称为无名寄存器,是vim默认的寄存器,复制、删除、修改等操作的内容都会保存在该寄存器中。

倘若没有指定要使用的寄存器,vim将缺省使用无名寄存器,它可以用双引号表示。为了显式地引用该寄存器,需要使用两个双引号。例如,""p,它完全等同于p命令。x、s、d、c与y命令(以及它们对应的大写命令)都会覆盖无名寄存器中的内容。无论哪一种情况,都可以通过加"(register}前缀来指定另外一个寄存器,但无名寄存器总是缺省的。事实上,无名寄存器的内容很容易被覆盖,不小心会导致问题发生。

命名寄存器("a-z)

命名寄存器使用字母a-z来命名。a-z命名寄存器可以存储复制的、修改的、和被删除的文本。用户需要显示地告诉vim要使用的命名寄存器。

追加文本:使用大写版本的命名寄存器来向原来的命名寄存器中追加文本。

复制专用寄存器("0)

就是使用y命令复制的内容都会存放到这个寄存器中。

缓存最近操作内容,复制与删除有别。

黑洞寄存器("_)

顾名思义,这个寄存器的功能和/dev/null设备非常地相似,就是将一切输入其中的东西都吞噬掉。我们常用x命令来删除某个字符,用dd命令来删除某行,其实这些都不是删除,是剪切,真正的删除应该是这些命令:

        "_dd   //删除某行

        "_x    //删除光标下的字符

文件名寄存器("%)

"%代表的是文件名寄存器,存放的是当前正在编辑的文件名

二、引用寄存器

我们重点讨论无名寄存器的命名、使用等操作。

本文中提到的d命令,y命令,c命令指的是和这个操作符相关联的命令集合,比如和y操作符相关联的一些命令如下:

        yy //复制当前行

        yw //当前光标下面的这个单词

        yit //复制一个html标签中的内容

        yft //复制当前行上光标到第一个t之间的所有内容

        yiw //复制一个单词的内容(yank in word)

vim的删除、复制与粘贴命令都会用到众多寄存器中的某一个。可以通过给命令加"{register}前缀的方式指定要用的寄存器。若不指明,vim将缺省使用无名寄存器。

1.在普通模式中使用寄存器

如果想把当前单词复制到寄存器a中,可执行"ayiw,或者,可以用"bdd,把当前整行文本剪切至寄存器b中。在此之后,既可以输入"ap粘贴来自寄存器a的单词,也可使用"bp命令粘贴来自寄存器b的一整行文本,两者互不干扰。

比如,%代表的是文件名寄存器,存放的是当前正在编辑的文件名,我们现在打开一个文件demo.txt,处于普通模式,此时输入以下内容:

        "%p

//表示将文件名寄存器的内容粘贴到当前行

文件内容就变成这个样子了:

2.在底行模式中使用寄存器

除了普通模式的命令外,vim也提供用于删除、复制与粘贴操作的Ex命令(底行模式下)。例如,可以执行:delete c,把当前行剪切到寄存器c,然后再执行:put c命令将其粘贴至当前光标所在行之下。

delete命令可以简写为d。

执行d b命令,删除当前行,内容存入b寄存器中

执行nd d命令,删除第n行,内容存入d寄存器中。

如下图,n=8

执行粘贴命令时,不能把put简写为p,会报错。

执行put d命令时,将在当前行后粘贴d寄存器中的内容。

执行nput d命令时,将在第n行后粘贴d寄存器中的内容。

如下图,n=3

一个很酷的技巧是将黑洞寄存器("_)传给:put命令。因为黑洞寄存器不保存任何值,:put _命令将插入一个新的空白行。您可将这个与全局命令联合起来,插入多个空行。

在编辑模式,当我们按下ctrl+r键,再加上相应的寄存器的名字,就可以插入寄存器中的内容了。

在编辑模式下,一般用的最多的是选择内容,用ctrl+insert复制,用shift+insert粘贴。

4. 在可视模式中使用寄存器

在可视模式下,一般用的最多的是无名寄存器。选择内容后,录入y命令进行复制,录入d命令删除内容。

三、查看寄存器

查看寄存器里面缓存的内容,可以使用多个命令,如dis,registers,register,reg等。

        :reg [寄存器名称]

        :reg      # 查看当前所有寄存器

        :reg a b c      # 查看命名寄存器

四、删除寄存器

从技术上来说,我们没有必要来清除任何寄存器,因为你下一个使用来存储文本的寄存器会自动覆盖该寄存器中之前的内容。

如果想清除寄存器中的内容,可以使用表达式:let @a=''来将寄存器"a的值设为空的字符串。

寄存器的生命周期是很长的,即使服务器重启什么的,只要能正常进入系统,寄存器里的内容都是一直存在的。

相关文章:

Linux CentOS7 vim寄存器

计算机中通常所说的寄存器Register一般指的是CPU中的寄存器,用来暂存CPU处理所需要的指令、数据等。 vim中同样也有寄存器,使用的方式和CPU非常类似。 vim中的寄存器(register)作用和windows中的剪切板类似,不过vim中的寄存器不止一个&…...

摄影后期图像编辑软件Lightroom Classic 2023 mac中文特点介绍

Lightroom Classic 2023 mac是一款图像处理软件,是数字摄影后期制作的重要工具之一,lrc2023 mac适合数字摄影后期制作、摄影师、设计师等专业人士使用。 Lightroom Classic 2023 mac软件特点 高效的图像管理:Lightroom Classic提供了强大的图…...

一种4g扫码付费通电控制器方案

之前开发了一款扫码付款通电控制器 功能:用户扫码付款后设备通电,开始倒计时,倒计时结束后设备断电,资金到账商家的商家助手里面,腾讯会收取千分之6手续费。 产品主要应用场景 本产品主要应用于各类无人值守或者自助…...

桌面自动化工具总结

引言:产品经理提出桌面程序需要自动化的测试,避免繁琐的人肉点击。说干就干。 现有自动化工具是五花八门,我找了两个框架。 这两个框架都是基于微软的UIA 框架,链接地址 https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-providerportal?source=recommen…...

Python入门教程 | Python 常用标准库概览

Python3 标准库概览 Python 标准库非常庞大,所提供的组件涉及范围十分广泛,使用标准库我们可以让您轻松地完成各种任务。 以下是一些 Python3 标准库中的模块: os 模块:os 模块提供了许多与操作系统交互的函数,例如创…...

【JavaScript】读取本地json文件并绘制表格

本文为避免跨域问题,使用了改造过的本地json文件的方法实现读取json数据并绘制表格。 如果发起http请求获取本地 json文件中数据,需要架设本地服务器,本文不做阐述。 概述 1、json在本地,并不需要从服务器下载。 2、采用jquery…...

前端笔试题总结,带答案和解析(一)

1. 执行以下程序&#xff0c;输出结果为&#xff08;&#xff09; var x 10; var y 20; var z x < y ? x:y; console.log(xx;yy;zz);A x11;y21;z11 B x11;y20;z10 C x11;y21;z10 D x11;y20;z11 初始化x的值为10&#xff0c;y的值为20&#xff0c;x < y返回结果为tru…...

LeetCode 202 快乐数

今天再次做到需要int转化成String&#xff0c;从而方便运算的题目。&#xff08;当然还可以直接使用int运算也是没问题的&#xff09; 再次出现了我容易弄混淆的问题&#xff0c;Integer.valueOf和ASCII码转化的差异&#xff1f; 其实之前我以及有记录过该问题&#xff0c;详…...

国庆作业day6

服务器 #include <my_head.h> #define IP "192.168.101.66" #define PORT 6666 int main(int argc, const char *argv[]) {//创建套接字int fd socket(AF_INET, SOCK_STREAM, 0);if(fd < 0){ERR_MSG("socket");return -1;}struct sockaddr_in s…...

李沐深度学习记录4:12.权重衰减/L2正则化

权重衰减从零开始实现 #高维线性回归 %matplotlib inline import torch from torch import nn from d2l import torch as d2l#整个流程是&#xff0c;1.生成标准数据集&#xff0c;包括训练数据和测试数据 # 2.定义线性模型训练 # 模型初始化&#xff08;函…...

堆--数组中第K大元素

如果对于堆不是太认识&#xff0c;请点击&#xff1a;堆的初步认识-CSDN博客 解题思路&#xff1a; /*** <h3>求数组中第 K 大的元素</h3>* <p>* 解体思路* <ol>* 1.向小顶堆放入前k个元素* 2.剩余元素* 若 < 堆顶元素, 则略过* …...

ipad使用技巧

1、goodnotes中批量导入pdf文件 法一&#xff1a; 直接参考视频&#xff1a; 【目前为止所知iPad上goodnotes批量导入网盘文件最快的方法】 大致步骤&#xff1a;pdf文件传到百度网盘&#xff0c;然后ES软件登录百度网盘&#xff0c;在goodnotes中导入&#xff0c;选择ES&a…...

Windows系统上使用CLion远程开发Linux程序

CLion远程开发Linux程序 情景说明Ubuntu配置CLion配置同步 情景说明 在Windows系统上使用CLion开发Linux程序&#xff0c;安装CLion集成化开发环境时会自动安装cmake、mingw&#xff0c;代码提示功能也比较友好。 但是在socket开发时&#xff0c;包含sys/socket.h头文件时&am…...

github搜索技巧

指定语言 language:java 比如我要找用java写的含有blog的内容 搜索项目名称包含关键词的内容 vue in:name 其他如项目描述跟项目文档&#xff0c;如下 组合使用 vue in:name,description,readme 根据Star 或者fork的数量来查找 总结 springboot vue stars:>1000 p…...

Python生成器

生成器 Generators 要理解生成器&#xff0c;首先要理解迭代器&#xff0c;迭代器由以下三个部分组成&#xff1a; 可迭代对象&#xff08;iterable&#xff09;迭代器&#xff08;iterator&#xff09;迭代&#xff08;iteration&#xff09; 1. 可迭代对象 只要定义了可以…...

flutter开发实战-使用FutureBuilder异步数据更新Widget

flutter开发实战-使用FutureBuilder异步数据更新Widget 在开发过程中&#xff0c;经常遇到需要依赖异步数据更新Widget的情况&#xff0c;如下载图片后显示Widget&#xff0c;获取到某个数据时候&#xff0c;显示在对应的UI界面上&#xff0c;都可以使用FutureBuilder异步数据…...

1.2 数据模型

思维导图&#xff1a; 前言&#xff1a; **1.2.1 什么是模型** - **定义**&#xff1a;模型是对现实世界中某个对象特征的模拟和抽象。例如&#xff0c;一张地图、建筑设计沙盘或精致的航模飞机都可以视为具体的模型。 - **具体模型与现实生活**&#xff1a;具体模型可以很容…...

【实用工具】谷歌浏览器插件开发指南

谷歌浏览器插件开发指南涉及以下几个方面&#xff1a; 1. 开发环境准备&#xff1a;首先需要安装Chrome浏览器和开发者工具。进入Chrome应用商店&#xff0c;搜索“Extensions Reloader”和“Manifest Viewer”两个插件进行安装&#xff0c;这两个插件可以方便开发和调试。 2…...

应用层协议——DNS、DHCP、HTTP、FTP

目录 1、DNS 协议 1-1&#xff09;Hosts 文件 1-2&#xff09;DNS 系统 1-3&#xff09;域名的组成、分类和树状结构 1-4&#xff09;DNS 域名服务器类型 1-5&#xff09;DNS 查询方式 1-6&#xff09;DNS 域名解析的一般步骤 1-7&#xff09;对象类型与资源记录 2、D…...

XML文件读写

0、.pro文件添加依赖 QT xml1、使用 QDomDocument 方式 #include <QtXml/QDomDocument> #include <QtXml/QDomProcessingInstruction> #include <QtXml/QDomElement> #include <QFile> #include <QTextStream> #include <QDebug>bo…...

Win11 安装 Vim

安装包&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Ru7HhTSotz9mteHug-Yhpw?pwd6666 提取码&#xff1a;6666 双击安装包&#xff0c;一直下一步。 配置环境变量&#xff1a; 先配置系统变量中的path&#xff1a; 接着配置用户变量&#xff1a; 在 cmd 中输入…...

Mac电脑BIM建模软件 Archicad 26 for Mac最新

ARCHICAD 软件特色 智能化 在2D CAD中&#xff0c;所有的建筑构件都由线条构成和表现&#xff0c;仅仅是一些线条的组合而已&#xff0c;当我们阅读图纸的时候是按照制图规范来读取这些信息。我们用一组线条表示平面中的窗&#xff0c;再用另一组不同的线条在立面中表示同一个…...

JavaEE-网络编程套接字(UDP/TCP)

下面写一个简单的UDP客户端服务器流程 思路&#xff1a; 对于服务器端&#xff1a;读取请求&#xff0c;并解析–> 根据解析出的请求&#xff0c;做出响应(这里是一个回显&#xff0c;)–>把响应写回客户端 对于客户端&#xff1a;从控制台读取用户输入的内容–>从控制…...

微服务技术栈-Gateway服务网关

文章目录 前言一、为什么需要网关二、Spring Cloud Gateway三、断言工厂和过滤器1.断言工厂2.过滤器3.全局过滤器4.过滤器执行顺序 四、跨域问题总结 前言 在之前的文章中我们已经介绍了微服务技术中eureka、nacos、ribbon、Feign这几个组件&#xff0c;接下来将介绍另外一个组…...

函数形状有几种定义方式;操作符infer的作用

在 TypeScript 中&#xff0c;函数形状可以用多种方式进行定义。下面介绍了几种常用的函数形状定义方式&#xff1a; 函数声明&#xff1a; function add(a: number, b: number): number {return a b; }在函数声明中&#xff0c;我们直接使用 function 关键字来声明函数&…...

Java / MybatisPlus:JSON处理器的应用,在实体对象中设置对象属性,对象嵌套对象

1、数据库设计 2、定义内部的实体类 /*** Author lgz* Description* Date 2023/9/30.*/ Data // 静态构造staticName&#xff0c;方便构造对象并赋予属性 AllArgsConstructor(staticName "of") NoArgsConstructor ApiModel(value "亲友", description …...

力扣 -- 1027. 最长等差数列

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int longestArithSeqLength(vector<int>& nums) {int nnums.size();int ret2;unordered_map<int,int> hash;//这里可以先把nums[0]存进哈希表中&#xff0c;方便后面i从1开始遍历hash[num…...

正则验证用户名和跨域postmessage

正则验证用户名 字母数字符号大小写8-14匹配用户名的 <!DOCTYPE html> <html> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>form</title> …...

jsbridge实战1:xcode swift 构建iOS app

[[toc]] 环境安装 macOs: 10.15.5 xcode: 11.6 demo:app 创建 hello world iOS app 创建工程步骤 选择&#xff1a;Create a new Xcode project选择&#xff1a;iOS-> single View App填写&#xff1a; project name: swift-app-helloidentifer: smile 包名language: s…...

零基础部署nginx mysql springboot

参考&#xff1a;写给开发人员看的Docker干货&#xff0c;零基础部署nginx mysql springboot 一、连接linux 阿里云 参考&#xff1a;部署到Linux 可能需要购买&#xff1a;购买链接 二、安装docker # 先切换到root用户下 sudo su# 更新apt-get&#xff0c;保证apt-get最新…...

潮阳网站制作/如何屏蔽百度广告推广

Springboot信佳玩具有限公司仓库管理系统摘要本论文主要论述了如何使用java语言开发一个Springboot信佳玩具有限公司仓库管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&…...

泰州网站开发公司/刷网站软件

感觉dsu on tree一定程度上还是与点分类似的。考虑求出跨过每个点的最长满足要求的路径&#xff0c;再对子树内取max即可。 重排后可以变成回文串相当于出现奇数次的字母不超过1个。考虑dsu on tree&#xff0c;容易想到遍历时记录每种情况的最大深度&#xff0c;合并时类似点分…...

腾和企业网站管理系统/最好的免费推广平台

1、下载 下载地址&#xff1a;https://redis.io/download 当前最新稳定版本为5.0.8&#xff0c;当然&#xff0c;你也可以下载历史版本。下载完成后&#xff0c;上传到Linux上你自己指定的目录下。 当然&#xff0c;也可以直接在Linux上直接通过下面命令下载&#xff1a;&am…...

手机网站建设合同书/网络营销的特点有

Linux系统启动的标准流程 原文链接&#xff1a;http://www.kerneltravel.net/journal/i/04.htm 系统的启动是指从计算机加电到显示用户登陆提示的整个过程。我们将在这里对整个流程以及关系到的一些内容做讨论。过程主要可以分为两个阶段&#xff1a;载入内核和准备运行环境&a…...

一台电脑如何做网站/查询关键词网站

Tar&#xff08;Tape ARchive&#xff0c;磁带归档的缩写&#xff09;tar [OPTION]...(1) 创建归档tar -c -f -v /PATH/TO/SOMEFILE.tar FILE... -v查看过程(2) 追加文件至归档&#xff1a;注&#xff1a;不支持对压缩文件追加tar -r -f /PATH/TO/SOMEFILE.tar FILE...(3) 查…...

什么是网络营销师/优化seo是什么

题意&#xff1a; 给出一个\(n(0 \leq n \leq 10^{12})\)&#xff0c;问\(n\)个\(M\)形的折线最多可以把平面分成几部分。 分析&#xff1a; 很容易猜出来这种公式一定的关于\(n\)的一个二次多项式。 不妨设\(f(n)an^2bnc\)。 结合样例我们可以列出\(3\)个方程&#xff1a;\(f(…...