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种寄存器类型:
- 匿名寄存器("")
- 编号寄存器("0-9)
- 小删除寄存器("-)
- 命名寄存器("a-z)
- 只读寄存器(":,".,"%)
- Buffer交替文件寄存器("#)
- 表达式寄存器("=)
- 选取和拖放寄存器("*,"+)
- 黑洞寄存器("_)
- 搜索模式寄存器("/)
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. 执行以下程序,输出结果为() 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,y的值为20,x < y返回结果为tru…...
LeetCode 202 快乐数
今天再次做到需要int转化成String,从而方便运算的题目。(当然还可以直接使用int运算也是没问题的) 再次出现了我容易弄混淆的问题,Integer.valueOf和ASCII码转化的差异? 其实之前我以及有记录过该问题,详…...
国庆作业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#整个流程是,1.生成标准数据集,包括训练数据和测试数据 # 2.定义线性模型训练 # 模型初始化(函…...
堆--数组中第K大元素
如果对于堆不是太认识,请点击:堆的初步认识-CSDN博客 解题思路: /*** <h3>求数组中第 K 大的元素</h3>* <p>* 解体思路* <ol>* 1.向小顶堆放入前k个元素* 2.剩余元素* 若 < 堆顶元素, 则略过* …...
ipad使用技巧
1、goodnotes中批量导入pdf文件 法一: 直接参考视频: 【目前为止所知iPad上goodnotes批量导入网盘文件最快的方法】 大致步骤:pdf文件传到百度网盘,然后ES软件登录百度网盘,在goodnotes中导入,选择ES&a…...
Windows系统上使用CLion远程开发Linux程序
CLion远程开发Linux程序 情景说明Ubuntu配置CLion配置同步 情景说明 在Windows系统上使用CLion开发Linux程序,安装CLion集成化开发环境时会自动安装cmake、mingw,代码提示功能也比较友好。 但是在socket开发时,包含sys/socket.h头文件时&am…...
github搜索技巧
指定语言 language:java 比如我要找用java写的含有blog的内容 搜索项目名称包含关键词的内容 vue in:name 其他如项目描述跟项目文档,如下 组合使用 vue in:name,description,readme 根据Star 或者fork的数量来查找 总结 springboot vue stars:>1000 p…...
Python生成器
生成器 Generators 要理解生成器,首先要理解迭代器,迭代器由以下三个部分组成: 可迭代对象(iterable)迭代器(iterator)迭代(iteration) 1. 可迭代对象 只要定义了可以…...
flutter开发实战-使用FutureBuilder异步数据更新Widget
flutter开发实战-使用FutureBuilder异步数据更新Widget 在开发过程中,经常遇到需要依赖异步数据更新Widget的情况,如下载图片后显示Widget,获取到某个数据时候,显示在对应的UI界面上,都可以使用FutureBuilder异步数据…...
1.2 数据模型
思维导图: 前言: **1.2.1 什么是模型** - **定义**:模型是对现实世界中某个对象特征的模拟和抽象。例如,一张地图、建筑设计沙盘或精致的航模飞机都可以视为具体的模型。 - **具体模型与现实生活**:具体模型可以很容…...
【实用工具】谷歌浏览器插件开发指南
谷歌浏览器插件开发指南涉及以下几个方面: 1. 开发环境准备:首先需要安装Chrome浏览器和开发者工具。进入Chrome应用商店,搜索“Extensions Reloader”和“Manifest Viewer”两个插件进行安装,这两个插件可以方便开发和调试。 2…...
应用层协议——DNS、DHCP、HTTP、FTP
目录 1、DNS 协议 1-1)Hosts 文件 1-2)DNS 系统 1-3)域名的组成、分类和树状结构 1-4)DNS 域名服务器类型 1-5)DNS 查询方式 1-6)DNS 域名解析的一般步骤 1-7)对象类型与资源记录 2、D…...
XML文件读写
0、.pro文件添加依赖 QT xml1、使用 QDomDocument 方式 #include <QtXml/QDomDocument> #include <QtXml/QDomProcessingInstruction> #include <QtXml/QDomElement> #include <QFile> #include <QTextStream> #include <QDebug>bo…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...
欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...
GB/T 43887-2024 核级柔性石墨板材检测
核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标: 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...
