vim复制粘贴和寄存器的使用

157 阅读2分钟

Vim Normal 模式复制粘贴 初学者会感觉Vim复制粘贴比较奇怪,先从normal 模式学习

normal 模式下复制粘贴分别使用y(yank) 和 p(put) ,剪切d 和 p
我们可以使用v(visual) 命令选中所要复制的地方,然后使用p粘贴
配合对象:比如 yim 复制一个单词,yy 复制一行

复制粘贴和其他的文本编辑器差不多,但是粘贴有个坑 很多人在vimrc中设置了autoindent,粘贴Python代码缩进混乱 这个时候就需要使用:set paste 和 :set nopaste 解决

是不是同好奇的Vim在mormal 模式下复制、剪切的内容去哪了?

Vim里操作的是寄存器而不是系统剪切板,这个其他的编辑器不同
默认我们使用d删除或者y 复制的内容都放到了“无名寄存器”
用x删除一个字符放到无名寄存器,然后p粘贴 ,可以调换俩字符

深入寄存器 Vim不使用单一剪切进行剪切,复制与粘贴,而是多组寄存器

 通过"{register}前缀可以指定寄存器,不指定默认用“无名寄存器”
 比如使用"ayiw 复制一个单词到寄存器a中,"bdd 删除当前行到寄存器b中
 Vim中 "" 表示无名寄存器,缺省使用。"" p 其实就等同与p

其他常见寄存器 除了游民寄存器a-z,Vim中还有一些其他常见寄存器

复制专用寄存器 "0 使用y 复制文本同时会被拷贝到复制寄存器0
系统剪切板 "+ 可以在复制前面加上 "+ 复制到系统剪切板
其他一些寄存器比如 "% 当前文件名,". 上次插入的文本