Bootstrap

Vim中的寄存器

VIM的寄存器

Vim操作的是寄存器而不是系统剪贴来存储缓存。

普通模式下,从某个特定的寄存器中读取文本的通用语法是"x,其中x是寄存器的标志。
默认使用修改c或d删除或y复制的内容都放到了"匿名寄存器"。比如用x删除一个字符放到无名寄存器,然后p粘贴,可以调换字符。

插入模式下,取出某个寄存器里面的内容放入到当前缓冲区中的方法为ctrl-r x,其中x是寄存器的标志。

# 查看寄存器里面缓存的内容
:reg [寄存器名称]

:reg 		# 查看当前所有寄存器
:reg + 		# 查看剪贴板寄存器
VIM常用寄存器
  • 匿名寄存器"Vim默认的寄存器,复制、删除、修改等操作的内容都会保存在该寄存器中。引用匿名寄存器的方法""

  • 系统剪切板寄存器+,使用系统剪贴板的前缀为"+。可以将内容拷贝到其他软件中,也可将其他软件里的内容拷贝到Vim实现Vim与其他软件的内容交互

    # 检查是否支持系统剪贴板
    echo has("clipboard")	# 命令模式下,如果输出为1表示支持,0表示不支持
    vim --version | grep "clipboard"	# shell命令行,出现+clipboard表示支持
    
    # 如果不支持,则安装
    sudo apt install vim-gtk	# 支持apt管理软件包的系统
    
    • 系统剪切板寄存器使用方法一:复制、删除前先引用剪切板寄存器

      1. 先用可视模式选中文本,再按"+使用系统剪贴板寄存器,之后用复制y或者剪切d,实现将内容复制到系统剪贴板再粘贴。
      2. 先按"+,再指定复制的文本(比如yy,2yy,dd,2dd等命令)将内容放到系统剪切板中,再粘贴。
    • 系统剪切板寄存器使用方法二:修改~/.vimrc配置文件,永久设置(推荐使用)

      # 在vimrc文件里面添加
      " VIM复制(删除/剪切)粘贴的命令可以和ctrl-c,ctrl-x,ctrl-v混用       
      " 将无名寄存器映射都系统剪切板,将复制、删除的内容保存到剪切板寄存器
      "set clipboard=unnamed                    
      set clipboard=unnamedplus
      

    注:有些用set clipboard=unnamed不起作用,需要用set clipboard=unnamedplus

  • 命名寄存器("a-z)

    • 命名寄存器使用字母a-z来命名。a-z命名寄存器可以存储复制的、修改的、和被删除的文本。用户需要显示地告诉Vim你要使用的命名寄存器,你拥有完整的控制权。
    • 追加文本:使用大写版本的命名寄存器来向原来的命名寄存器中追加文本。
  • 文件名寄存器%

    # 将文件名插入到Vim编辑的文件中
    :r! echo %
    # 将文件全路径插入到Vim编辑的文件中
    :r! echo %:p
    

VIM寄存器可参考:

https://gitee.com/zhang_qu/learn-vim_zh_cn_by-smart-way/blob/master/ch08_registers.md

https://www.zhihu.com/question/19863631

;