VIM使用系列:寄存器与复制粘贴缓冲区

现在已经可以熟练使用VIM的大多数基本命令、功能来进行项目代码的开发了,但是在项目的开发过程中,依然会感觉到一些操作效率比较低,比如通过h/j/k/l来进行光标的大范围移动这类操作,显然VIM提供了更高效的命令操作方式。最近经常需要完成的工作就是需要在代码之间来回的复制、粘贴、搜索和替换,常用的d/y/x/p命令已经显得不够,于是学习了一下VIM的寄存器功能,使用寄存器的内容缓冲功能可以极大地提高大量复制粘贴工作的效率。

寄存器类型

VIM中有9中类型的寄存器,寄存器的主要功能就是缓存操作过程中删除、复制、搜索等的文本内容,通过 :help registers命令查看寄存器的详细帮助说明,这里对类型翻译如下:

  1. 未命名寄存器 ""  —— vim使用的默认寄存器,文本来源命令:d/c/s/x/y
  2. 10个数字命名寄存器 "0 - "9 —— vim缓存yank和delete行操作命令产生的文本
  3. 1个非行删除内容缓存寄存器 "- —— vim缓存delete操作在非行上时产生的文本
  4. 26个字母命名寄存器 "a - "z / "A - "Z —— 完全由用户指定内容的寄存器
  5. 4个只读寄存器 ". "% "# ":  
  6. 表达式寄存器 "= —— 使用VIM强大的表达式功能(从来没用过,一点不懂)
  7. GUI选择寄存器 "* "+ "~ —— vim缓存在GUI中选择的文本
  8. 黑洞寄存器 "_ —— 类似Linux中的/dev/null文件,只进不出,可用来滤掉影响默认寄存器的内容
  9. 最后搜索模式寄存器 "/ —— 缓存在vim中使用过的最后的搜索内容

这些寄存器很多,那怎么来查看它们的内容呢?使用VIM的 :registers命令或者短一些的 :dis命令,这两个命令会列出所有存在的寄存器的内容,然后你就可以选择指定寄存器的内容进行粘贴了。

寄存器使用

注意到上述寄存器的命名前面都有一个双引号,这就是使用他们的方式。

  • 在Normal模式下操作d/y/x等命令时,通过在命令前面加入寄存器的名字如 "ayy,来将命令生成的内容放入指定的寄存器中,如上面的a寄存器中,而不是vim默认使用的""寄存器和"0寄存器。
  • 粘贴时,通过在p命令的前面加入寄存器的名字如 "ap,来将寄存器中的内容放入到光标所在的位置行上或下。
  • 只读寄存器、搜索模式寄存器由VIM进行内容放入,用户只能使用他们的内容。

下面对个人觉得在开发中会比较有用和熟悉的一些寄存器进行具体的说明。

数字寄存器

  • "0 : 存放最近使用最多的y命令生成的文本内容,如果未显式指定其内容
  • "1 - "9 : 存放最近使用的d行操作命令生成的文本内容,如果未显式指定其内容,并在9个寄存器间对内容进行轮流存放,即有新的内容时,将"1的内容推到"2, 2到3,3到4 ...

字母寄存器

如果你打算将一段内容进行多次长时间的来回拷贝,则最好使用字母寄存器,因为他们的内容被你修改后不会被VIM自动修改掉,而数字寄存器的内容随着新操作的使用会覆盖掉你指定的内容。

  • "a - "z : 每次指定这些寄存器之一时,产生的文本内容将覆盖掉寄存器中原有的内容
  • "A - "Z : 每次指定这些寄存器之一时,产生的文本内容将追加到寄存器中原有的内容之后,如果选项'cpoptions'的值中有>符号,则在追加同时会进行行分割,可以通过命令: :set cpo+=>设置。

只读寄存器

  • ". : 包含最后在vim insert模式下插入的文本内容,也可以通过命令 . 重复上一次的操作。
  • "% : 包含当前文件的名字,方便在文件中插入文件名
  • "# : 包含当前可选择的文件名,指在当前会话中使用过的文件的名字

系统剪贴板

在系统中进行多个应用之间的内容拷贝时,会使用到系统剪贴板,这可以使用"*,"+寄存器来将内容粘贴到VIM中,他们也都是只读寄存器。除此之外,还可以使用键盘快捷键Shift+Insert来快速插入。

寄存器内容设置

除了上面介绍的通过在操作命令前添加寄存器号来指定寄存器的内容外,vim还提供了在命令行显式指定寄存器内容的命令 :let-@,例如命令 :let @a = "vim registers blog", 表示将"a寄存器内容设置为右值。

粘贴模式

在vim中可以通过命令 :set paste来设置粘贴模式状态,此时粘贴的内容将可以保持原有的格式不变;通过命令 :set nopaste命令回到正常操作模式。

转载于:https://my.oschina.net/shelllife/blog/144357

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vim寄存器是一种强大的功能,类似于剪贴板,可以在不同寄存器中存储不同的数据、命令。其中,系统的剪贴板寄存器保存了我们通常使用的Ctrl+C和Ctrl+V的内容。 在vim中,我们可以使用以下命令进行复制和粘贴: - 使用"y"命令复制文本到寄存器。例如,使用"yy"复制当前行到默认寄存器中。如果想要复制到其他寄存器,可以使用命令"\"加上寄存器的名称,例如"\ayy"将当前行复制到a寄存器中。 - 使用"p"命令将寄存器中的内容粘贴到当前光标位置后面。例如,使用"p"将默认寄存器的内容粘贴到当前位置。 - 使用"[寄存器名称p"命令将指定寄存器中的内容粘贴到当前光标位置后面。例如,使用"ap"将a寄存器中的内容粘贴到当前位置。 此外,还有一些其他的命令可以实现不同的复制粘贴功能,比如"gp"和"gP",以及":put"命令等。这些命令可以根据需要选择使用,以便更方便地进行复制和粘贴操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vim 寄存器 vim粘贴与系统粘贴](https://blog.csdn.net/prike/article/details/79088791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值