Vim实用技巧笔记09

复制与粘贴

  • 删除 delete
  • 复制 yank
  • 粘贴 put
  • :registers命令可以查看寄存器情况

通常情况下,在讨论剪切、复制与粘贴这3组操作时,指的都是操作系统剪贴板。不过,在Vim的术语里,我们操作的是寄存器,而并非剪贴板

寄存器

Vim的删除、复制与粘贴命令都会用到众多寄存器中的某一个。我们可以通过给命令加"{register}前缀的方式指定要用的寄存器。若不指明,Vim将缺省使用无名寄存器

让我们看一些引用寄存器的例子,如果我们想把当前单词复制到寄存器a中,可执行 "ayiw,或者,可以用 "bdd,把当前整行文本剪切至寄存器b中。在此之后,我们既可以输入 "ap粘贴来自寄存器a的单词,也可使用 "bp命令粘贴来自寄存器b的一整行文本,两者互不干扰。

无名寄存器 ""

  • x s d{motion} c{motion} y{motion}都会覆盖无名寄存器中的内容

复制专用寄存器 "0

  • y{motion}命令专用的寄存器

黑洞寄存器 "_

  • 有去无回,删除文本且不保存任何副本

系统剪切板 "+ 选择专用寄存器 "*

到目前为止,我们所讨论的寄存器都是Vim内部的。如果想从Vim复制文本到外部程序(反之亦然),则必须使用系统剪贴板

  • "+p 从外部程序中用剪切或者复制命令获取了文本,粘贴到Vim内部
  • C-r+ 插入模式下的命令,功能同上

linux X11视窗系统支持主剪切板 primary

Windows 和 Mac 没有主剪切板

  • "+ "* 都代表系统剪切板

表达式寄存器 "=

  • 可以计算数学公式
  • 还可以使用Vim特定的函数和运算符。例如通过表达式寄存器来得到环境变量的值(例如"=$HOME)
  • 输入表达式,然后 p 就可以了,插入模式下,C-r= 计算后值直接出现在文本中

其他寄存器(只读寄存器)

系统粘贴的一些小问题

  • 如果vim没有集成系统剪贴板功能
  • set autoindent 设置之后,从系统粘贴代码到vim可能会出现代码格式,缩进出现问题
  • 粘贴之前使用:set paste命令,然后粘贴就会没有类似问题
原文地址:https://www.cnblogs.com/rookieagle/p/15659994.html