诗和远方

VIM寄存器

vim

寄存器是VIM用于保存临时数据的地方,不同于传统的编辑器(于系统共享一个寄存器,也成为剪切板),VIM具有多个寄存器,分别保存不同的临时数据,活用多个寄存器可以显著提高数据的安全和可操作性。

同时,为了与系统剪切板互通,VIM有一个专用的寄存器,与系统剪切板内容一致,既保证了VIM本身的统一性,也实现了与操作系统的对接。


查看所有寄存器值::reg

查看指定寄存器值::reg "{register_name}


调取寄存器值

NORMAL Mode:"{register_name}

COMMAND MODE:<C-r>+"寄存器名称 (输入<C-r>后VIM会自动打出"寄存器引用符号。

INSERT MODE:<C-r>+寄存器名称(无需输入寄存器引用符号")


VIM寄存器分类


1. 无名寄存器(默认寄存器)

引用方式:""

该寄存器是默认的寄存器,所有的复制和修改操作(x、s、d、c、y)都会将该数据复制到无名寄存器。


2. 字母寄存器

引用方式:"a - "z 或"A - "Z

{register_name}只能是一位的26个英文字母,从a-z。

大写字母A-Z寄存器内容将会合并到对应小写字母内容后边。


3. 数字寄存器

引用方式:"0 (数字0)- "9


3.1 复制专用寄存器0**

引用方式:"0 (数字0)

仅当使用复制操作(y)时,该数据将会同时被复制到无名寄存器和复制专用寄存器。


3.2 逐级临时缓存寄存器1-9**

引用方式:"1 - "9 (数字1-9)

所有不带范围(‘(’,‘)’,‘{’,‘}’)、操作涉及1行以上的删除修改操作(x、s、d、c)的数据都会复制到逐级临时缓存寄存器,并在新的数据加入时,逐级先后推移。1的数据复制到2,2的复制到3,最后的9寄存器内容将会被删除。

1行以内的数据删除修改操作的数据不会复制到逐级临时缓存寄存器1-9,而是复制到另一个Small Delete Register: "-


4. 黑洞寄存器

引用方式:"_

几乎所有的操作涉及的数据都会被复制到寄存器,如果想让操作的数据不经过寄存器,可以指定黑洞寄存器,数据到该寄存器就会消失掉,不能显示,也不存在。


5. 系统剪切板

引用方式:"+ 或"*

于VIM外部的GUI交互数据时,需要使用专用的系统剪切板。

在Unix环境下,"+寄存器需要+xterm-clipboard feature的VIM软件才能使用,具有这个feature的VIM可以安装vim-gtk(包含gvim和vim),使用gvim可以正常调用"+寄存器。


"+和"*的区別:

Under Windows, the * and + registers are equivalent.


For X11 systems, though, they differ. For X11 systems, * is the selection, and + is the cut buffer (like clipboard).


剪切板与自动缩进indent

如果开启了set autoindent,在粘贴具有格式缩进的文本时(如python程序),粘贴的结果将会是缩进混乱的,因为set autoindent的影响。


6. 表达式寄存器

引用方式:"=

所有寄存器里最特殊的一个,用于计算表达式。

输入完该寄存器应用后,会在命令行里提示“=”,按需输入表达式,结果将会显示到光标处。


7. 其他寄存器

"% 当前文件名,包含文件路径。

"/ 上次查找的内容。

". 上次插入的内容。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Catalog
标签列表
最新
最热
常用网站
站点信息
  • 文章总数:2016
  • 页面总数:1
  • 分类总数:17
  • 标签总数:518
  • 评论总数:0
  • 浏览总数:592287
Archives
Copyright © 2017-2019 www.my889.com Some Rights Reserved.
推荐使用 Chrome 浏览器浏览本站
沪ICP备17052342号
Sitemap XML