IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Vim如何一次复制多次粘贴,初次认识Vim寄存器 -> 正文阅读

[开发工具]Vim如何一次复制多次粘贴,初次认识Vim寄存器

目录

奇怪的Vim复制、粘贴操作 (y + p)

Vim寄存器是啥?

咋使用寄存器呢?

终于可以快乐的一次复制多次粘贴了


奇怪的Vim复制、粘贴操作 (y + p)

作为一个Vim “重度患者”,在平常使用idea写代码的时候没有vim模拟器,简直要命。

习惯了一些操作命令后,总想着有没有更简洁的命令可以完成同一个操作。

今天,在编辑文本的时候发现,vim的复制/粘贴(y + p)功能,好像只能复制/粘贴一次。比如说,当你复制一个词 mysql,随后你把这个词粘贴到另一个词 oracle 上,这就把oracle词替换成了mysql这个词。但是,当你想要再 粘贴一次时,按下键位p, 你会发现,粘贴出来的内容是oracle。

这就有点蒙了,我明明复制了mysql啊,怎么粘贴出来就变成了oracle了呢?这vim复制/粘贴是不是有个BUG啊?

不不不,vim到现在还这么多人用,不可能还会出现这样的BUG。我知道,问题出在自己身上。

于是,我开始查资料。我在搜索引擎搜索栏上输入关键字:vim?一次复制 多次粘贴。果然,这压根不是bug,而是我不会使用,不知道vim复制/粘贴的内部实现原理。

中文查找有了一些线索,显示这跟 ”vim 寄存器有关”,于是,我又在搜索引擎重新输入新的关键词:vim registers.

这下,终于搞明白为啥我只能复制/粘贴一次,以及怎么实现一次复制多次粘贴了!

Vim寄存器是啥?

查了资料才发现,原来在平常使用vim的过程中,就一直在使用”寄存器“这玩意儿,只是我们没有意识到它的存在而已。

就拿这次想搞明白的操作”复制/粘贴“来说,我们就是在使用”寄存器“实现的操作。

当我们执行复制(y)命令的时候,被复制的文本内容就被存储到了一个寄存器上(这个寄存器叫:unnamed register "",中文就是:未命名的寄存器 “”)。之后,当我们执行粘贴命令时,就会读取unnamed register里面的内容然后进行粘贴操作。

那寄存器到底是啥? 寄存器是Vim用来存储一些文本或操作细节的内存空间。每个空间都有一个标识符,以便随后可以访问它。

咋使用寄存器呢?

在上面的复制/粘贴操作中,就已经使用了寄存器。只不过是使用的默认的那个,也就是“unnamed register "" "。

当我们想要显示使用某个寄存器时,我们可以使用 双引号后面再跟某个寄存器的名字。比如,"a表示寄存器 a,": 表示寄存器?: 。

那如何获取有哪些寄存器以及它们的名字呢?很简单,使用命令:reg 就可以获得整个寄存器列表;或者你可以带上寄存器的名字,表示查特定的一个或几个寄存器信息,如命令:reg 0 a b,表示获取寄存器0、a、b的信息

如下代码所示:

# 获取整个寄存器列表信息
:reg
Type Name Content
  c  ""    editor
  c  "0    editor
  l  "1   ...
  b  "2   ...
  b  "3    ^J ^J ^J
  b  "4   3. ^J7. ^J9. ^J10.
...
  c  ":   s/powerful/wonderful/ 

# 获取部分寄存器信息
:reg 0 : "                         
Type Name Content
  c  ""    editor
  c  "0    editor
  c  ":   s/powerful/wonderful/

上面列表中的Type一栏,想详细了解的话可以自己去查查资料。这里就不展开。

其实,寄存器在Vim中到处被使用。常见的例子有

  • 在移除文本的时候。比如,使用 x 命令,这个时候,被删除的命令就存在了 unnamed register "" 里面
  • 在使用 “/ 搜索字符?”搜索文本的时候。搜索字符就被存在 “/” 寄存器中。

至于寄存器的具体使用方法,内容比较多,以后可能会再单独整一篇文章出来。

终于可以快乐的一次复制多次粘贴了

了解了上面的一些前置知识后,我们终于可以愉快的开始使用一次复制多次粘贴操作了。

使用方式是:

  1. 选中你要复制的内容,按下复制命令 y。此时 未命名寄存器?""名字为0的寄存器 "0 都存下了刚刚复制的内容。
  2. 然会选中你要粘贴的内容,按下粘贴命令 p。注意:此时 未命名寄存器 "" 里面的内容已经变成刚刚粘贴替换掉的内容了。此时,再使用 p,就会直接把 未命名寄存器 ""?里面的内容粘贴出来。
  3. 当你想要继续粘贴复制的内容时,需要使用 名字为0的寄存器。它还保留着刚刚复制的内容。 使用命令 "0p 即可。

不多说了,继续做 Crtl-C / V 工程狮了,噢~不,是 y / p?工程狮……

参考资料:

1.?Using Vim Registers

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:56:38  更:2021-09-08 10:58:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:44:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码