概述
复制粘贴是文本编辑最常用的功能,但是在vim中复制粘贴还是有点麻烦的,有一点学习成本。本文总结了使用vim复制粘贴的典型场景和使用方法,希望对读者有帮助。
vim内部复制、粘贴、剪切
选择文本
v+光标移动 (按字符选择)高亮选中所要的文本,然后进行各种操作(比如,d表示删除)。V (按行选择)v+选中的内容+c 更改选中的文字
复制:y(ank)
y 用v命令选中文本后,用y进行复制yy 复制当前行,然后用p进行粘贴5yy 复制从当前行开始的5行y_ 等同于yyY 等同于yyyw 复制当前单词y$ 从当前位置复制到行尾y0 从当前位置复制到行首y^ 从当前位置复制到第一个非空白字符yG 从当前行复制到文件结束y20G 从当前行复制到第20行y?bar 复制至上一个出现bar的位置
粘贴:p(aste)
p(小写) 在光标位置之后粘贴P(大写) 在光标位置之前粘贴
剪切
v + 方向键(hjkl)选中内容 + d 剪切 + p粘贴
剪贴板
默认剪贴板
vim提供12个剪贴板,它们的名字分别为vim有11个粘贴板,分别是0、1、2、...、9、a、“。如果开启了系统剪贴板,则会另外多出两个:+和*。使用:reg命令,可以查看各个粘贴板里的内容。
:reg
在vim中简单用y只是复制到“(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容。
复制和粘贴到指定剪贴板
要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按"Ny完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按"ay就可以了。
要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按"Np,其中N为粘贴板号。比如,可以按"5p将5号粘贴板里的内容粘贴进来,也可以按"+p将系统全局粘贴板里的内容粘贴进来。
系统剪贴板
Vim支持系统剪贴板,需要打开clipboard功能。使用下面的命令,检查当前版本的Vim,是否支持clipboard。
$ vim --version | grep "clipboard" -clipboard +insert_expand +pat