Linux CentOS7 vim寄存器解读

 更新时间:2023年11月08日 15:22:21   作者:qq_36142959  
这篇文章主要介绍了Linux CentOS7 vim寄存器使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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

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

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

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

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

一、认识寄存器        

vim的寄存器可以看成vim中额外用来存储信息的区域,虽然看不见,但是如果使用d、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  _命令将插入一个新的空白行。您可将这个与全局命令联合起来,插入多个空行。

3.在编辑模式中使用寄存器

在编辑模式中,我们不能定义或命名寄存器(这是因为:只能通过命令的方式命名寄存器,在编辑模式下,不能执行命令,就不能命名寄存器)。

在编辑模式下,我们可以使用在其他模式下命名的寄存器(如果是在一个服务器,一个系统中,其他人在其他文档中命名的寄存器)。具体使用方法:按下ctrl+r键,(将显示一个")再加上相应的寄存器的名字,就可以插入寄存器中的内容。

在编辑模式下,一般用的最多的是系统剪切板:选择内容;用ctrl+insert复制;用shift+insert粘贴。

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

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

三、查看寄存器

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

  • :reg [寄存器名称]
  • :reg      # 查看当前所有寄存器
  • :reg a b c      # 查看指定的命名寄存器

四、删除寄存器

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

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

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

五、寄存器与剪切板

在讨论寄存器时,一个绕不开的话题是与系统剪切板的关系。

系统剪切板是所有操作系统必备的工具或功能,在复制、删除、粘贴等方面发挥着重要作用。

在linux中,通过设置可以打通寄存器与剪切板,即剪切板用"+寄存器表示,与其他寄存器一样使用。

其最大好处就是可以在普通模式、命令行模式下使用剪切板中的内容。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Ubuntu中安装MySQL更改默认密码的步骤详解

    Ubuntu中安装MySQL更改默认密码的步骤详解

    本文分步骤给大家介绍Ubuntu中安装MySQL更改默认密码的方法,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-10-10
  • Apache运行模式之standalone和inetd模式介绍

    Apache运行模式之standalone和inetd模式介绍

    这篇文章主要介绍了Apache运行模式之standalone和inetd模式介绍,本文讲解了ServerType这个配置参数,ServerType这个配置选项指定如何运行Apache,需要的朋友可以参考下
    2015-06-06
  • 关于Ubuntu系统常见问题及解决办法

    关于Ubuntu系统常见问题及解决办法

    这篇文章主要介绍了关于Ubuntu系统常见问题及解决办法,Ubuntu是linux系统的一种,在刚开始使用是会碰到各种各样的问题,本文列举了一些常见的问题,需要的朋友可以参考下
    2023-03-03
  • CentOS 7更新时出现:Multilib version problems问题的解决方法

    CentOS 7更新时出现:Multilib version problems问题的解决方法

    这篇文章主要给大家介绍了关于CentOS 7系统更新时出现:Multilib version problems问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-11-11
  • 在CentOS 7下使用yum配置MySQL源并安装MySQL

    在CentOS 7下使用yum配置MySQL源并安装MySQL

    这篇文章主要介绍了CentOS 7.0下使用yum安装mysql的方法详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • 确保Linux服务器安全 防范四种级别攻击

    确保Linux服务器安全 防范四种级别攻击

    以下的文章主要描述的是防范四种级别攻击确保Linux服务器安全,如果你对防范四种级别攻击确保Linux服务器安全心存好奇的话,以下的文章将会揭开它的神秘面纱。
    2011-03-03
  • 详解CentOS7下PostgreSQL 11的安装和配置教程

    详解CentOS7下PostgreSQL 11的安装和配置教程

    这篇文章主要介绍了CentOS7下PostgreSQL 11的安装和配置教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • CentOS 7.2配置Apache服务httpd(下)

    CentOS 7.2配置Apache服务httpd(下)

    这篇文章主要为大家详细介绍了CentOS 7.2配置Apache服务 httpd上篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 教你使用Apache搭建Http下载服务器

    教你使用Apache搭建Http下载服务器

    这篇文章主要介绍了使用Apache搭建Http下载服务器的详细过程,Apache2默认采用的是80端口号,因此直接通过公网ip或域名就能访问,需要的朋友可以参考下
    2022-10-10
  • 手把手教你启用Win10的Linux子系统(图文超详细)

    手把手教你启用Win10的Linux子系统(图文超详细)

    这篇文章主要介绍了手把手教你启用Win10的Linux子系统(图文超详细),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论