详解 vim 复制粘贴和剪贴板

使用 vim 总是免不了被跨程序复制粘贴困扰,本文详细解释使用 vim 剪贴板的注意事项。

gui selection

我们通常说的剪贴板功能是由 GUI 图形界面提供,具体到 Linux 是由 X11 提供支持(Wayland 不在本文范围内)。
X11提供的剪贴板功能叫做 x11-selection,与我们熟知的 windows 上的剪贴板存在一些差异。

  • selection 并不保存复制的内容,数据仅在粘贴时才从选择位置复制到粘贴位置。如果粘贴时对应的应用程序已经退出,则无法复制到数据。

  • selection 提供了两个粘贴板,一个叫 PRIMARY,一个叫 CLIPBOARD。通常,使用鼠标左键选择时数据被复制到 PRIMARY,使用鼠标中键时从 PRIMARY 粘贴;而使用 CTRL+C 时数据被复制到 CLIPBOARD,使用 CTRL+V 时数据从 CLIPBOARD 粘贴。后者更加类似 windows 的剪贴板。

vim 下有两个寄存器 *+ 分别对应 PRIMARY 和 CLIPBOARD。VISUAL 模式下选择的字符会自动存入 * 寄存器,意味着可以使用鼠标中键粘贴。使用 "*yy 可以主动将字符复制到 PRIMARY,而使用 "+yy 则将字符复制到 CLIPBOARD。

vim 中修改 clipboard 选项可以控制将复制删除操作存入 * + 寄存器。 `

  • unnamed 存入 * 寄存器,即存入 PRIMARY 剪贴板,通过鼠标中键粘贴。
  • unnamedplus 存入 + 寄存器,即存入 CLIPBOARD 剪贴板,通过 CTRL+V 粘贴。
  • autoselect 选择即自动存入 *
  • autoselectplus 选择即自动存入 +

选项可以叠加,我习惯在默认的 autoselect 基础上加入 unnamedplus 以使用 + 寄存器: set clipboad^=unnamedplus

终端

在终端里复制粘贴的方式和快捷键可能会有所不同,依赖于终端的实现。前面提到的 PRIMARY 和 CLIPBOARD 使用的规则也需要终端的实现遵循。

常见的 ”copy on select" 功能就是在选择的同时同步复制,相当于既复制到 PRIMARY 又复制到 CLIPBOARD。

还有些老的应用支持 cut buffer 的功能。cut buffer 是类似于 x11 selection 的功能,不过已经标记为过时的特性,新的应用不应当再使用。

Clipboard Manager

前面提到 selection 剪贴板的内容会在应用退出后消失,如果想再应用推出后能继续使用粘贴,则需要用到剪贴板管理器,他提供剪贴板历史记录功能。典型的应用有 xclipboard,我目前在用 parcellite。

使用 gnome 这样的桌面环境不需要额外安装剪贴板管理器,而像 i3 这种 wm 则需要自己安装。

总结

vim 使用剪贴板需要:

  • 使用的 vim 版本支持 clipboard,通过 vim --version|grep clipboard 查看。
  • 配置 clipboard 选项,或者使用 "*yy 明确指定使用 * 或者 + 寄存器。
  • 剪贴板管理器。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值