1 概述

vim中的复制,删除,替换(d,r,s,x,y等)的内容都会被保存到默认的未命名的寄存器中,之后可以通过p进行粘贴,但是,这个寄存器不是系统的剪贴版,很多时候需要vim与系统剪贴版的交互,那么,具体怎么做呢?

2 暴力解决

系统剪贴版复制vim时,新建一个文件,直接ctrl+v复制过去然后vim打开。

vim中的内容复制到系统剪贴版,使用cat+grep,在终端ctrl+c复制即可。

这是最简单也是比较通用的方法,不会受到什么vim不支持剪贴版之类的影响。

没错就是简单粗暴。

3 优雅的方案

当然上面的方法想必也不是您想要的,因此,这里介绍一种优雅一点的方法。

3.1 查看剪贴板支持

首先需要知道vim是否支持剪贴版:

  1. vim --version | grep clipboard



如果有

  1. +clipboard

就表示支持,没有的话比如笔者这个就不支持,需要安装。

笔者的Manjaro,可以使用yay安装,不过提示过期了:



也可以选择安装gvim,另外,Debian系的可以安装vim-gtk:

  1. sudo apt install vim-gtk

Redhat系的需要安装vim-X11以及vim-enhanced,然后加个别名:

  1. alias vi='vimx'
  2. alias vim='vimx'

MacOS:

  1. sudo brew install vim

3.2 系统剪贴板复制到vim

很简单,使用

  1. "+p

  1. "*p

即可,vim提供了

  1. + *

这两个寄存器与系统剪贴板进行交互,大多数系统上这两个系统一样,但在某些linux上可能不等价,以下是官方文档

  1. +

对应ctrl+c,ctrl+v使用的系统剪贴板,

  1. *

对应的是鼠标选择的内容,可以使用中间粘贴。

当然高版本的vim还有一种很简单的解决办法:Shift+Insert能直接粘贴。

3.3 vim寄存器复制到系统剪贴板

在vim中使用y进行复制,但是是复制到默认的未命名寄存器的,想要复制到系统剪贴版只需要把y改为

  1. "+y

  1. "*y

即可。

3.4 偷懒方法

所谓的偷懒方法就是把默认的未命名寄存器与系统剪贴板关联上,使用

  1. set clipboard=unnamed

即可。vim7.3.74以上的版本可以使用:

  1. set clipboard=unnamedplus

这样y,d,s,x等操作就和系统剪贴版关联上了。

4 寄存器相关知识

vim中的y,d,c,x,s等的操作的内容会复制到寄存器中,可以使用

  1. :reg

查看寄存器的内容,使用

  1. :help registers

查看帮助,另外,寄存器的常用操作包括:

  1. "{register}y 复制到寄存器,默认register为未命名寄存器
  2. "{register}p 粘贴寄存器的内容

比如

  1. "a4yy
  2. "+p

vim中提供了多种多样的寄存器,具体来说可以分为10种共48个寄存器。

4.1 未命名寄存器

  1. ""

也叫匿名寄存器,使用d,c,x等删除的字符会存放进匿名寄存器,换句话说,最近一次删除,修改,复制的内容都存放在这里,会覆盖。

4.2 编号寄存器

  1. "0
  2. "1
  3. ...
  4. "9

从0到9共10个,可以细分为复制专用寄存器与删除专用寄存器,因为

  1. "0

保存着最近一次y复制的内容,而

  1. "1
  2. ...
  3. "9

这9个寄存器保存着最近一次删除(d,c,s,x等)的内容。上一次删除的内容被存放在

  1. "1

上上次的被存放在

  1. "2

以此类推。

注意,只有整行的删除,和通过段落级别的移动指令的删除才会放进

  1. "1

另外当指定寄存器后,比如

  1. "ayy

不会写入到

  1. "0

中,但是

  1. "add

会写入到

  1. "1

中,也就是说,指定寄存器后复制内容不会写入0寄存器,但是删除内容会写入1寄存器。

4.3 小删除寄存器

  1. "-

不足一行的小删除会被放进去,包括s,d,c,x。与

  1. "0

类似,用户指定寄存器后不会被写入。

4.4 命名寄存器

  1. "a
  2. "b
  3. ...

小写字母组成的26个寄存器,一般用来录制键盘宏,比如有如下内容:

  1. iostream
  2. string
  3. cmath

可以把位置定位到第一行,然后

  1. qaI#include<{ESC}A>{ESC}jq

其中

  1. {ESC}

表示按下ESC键,这样第一行就加上include了,同时把宏记录到了寄存器a,接下来,使用

  1. 2@a

即可在剩余两行加上include。

另外,小写对应的大写字母的寄存器用于追加内容,比如:

  1. "Ayy

可以向

  1. "a

追加内容。

4.5 只读寄存器

  1. ". 上一次insert插入的内容
  2. "% 当前文件名,从vim的工作目录到该文件的路径
  3. ": 上次命令模式下键入的命令,使用@:执行上次命令, .只能进行一些简单的重复,一些复杂的命令比如替换,需要使用@:

共三个,只读。

4.6 交替文件寄存器

  1. "#

保存着当前窗口的交替文件。

交替文件是缓冲区(Buffer)上的一个文件,而缓冲区其实时vim中打开文件编辑时占用的那部分内存,编辑文件时,只是编辑缓冲区中的文件,当使用

  1. :w

时,会把缓冲区的文件写入磁盘。

4.7 表达式寄存器

  1. "=

计算vim脚本的返回值,输入后会跳转到命令行,此时若输入3+2,回车并p,会粘贴5。

4.8 选择拖放寄存器

上面已经介绍了两个:

  1. "+
  2. "*

还有一个是

  1. "~

其中

  1. "+
  2. "*

在Mac与Windows上指的是系统剪贴板,在大多数X11,也就是带桌面环境的Linux发行版中是有区别的,上面也提到了一点:

  1. "+ 系统剪贴板
  2. "* 鼠标选中区域,可以中键粘贴

有文本拖拽到vim时,被存放在

  1. "~

中,默认会将其中的内容插入到光标位置。

4.9 黑洞寄存器

  1. "_

所有进入到里面的内容会消失,通常用于脚本中。

4.10 搜索寄存器

  1. "/

存储上一次搜索的关键词。可写,通过

  1. :let @/ = "123"

下一次搜索可直接

  1. /

不输入关键词回车即可。

注意不存在

  1. "?

寄存器。

5 参考

1.Vim 寄存器完全手册

2.Vim官方文档-1

3.Vim官方文档-2

4.知乎-如何将 Vim 剪贴板里面的东西粘贴到 Vim 之外的地方

vim与系统剪贴版的交互的更多相关文章

  1. VIM 与 系统剪切版

    1, 查看 vim 是否支持 clipboard 功能 $ vim --version | grep clipboard 2, 如果有 +clipboard 则跳过这一步; 如果显示的是 -clipb ...

  2. vim与系统剪切板之间的复制粘贴

    背景 vim各种快捷建溜得飞起,然而与系统剪切板之间的复制粘贴一直都是我的痛. 每次需要从vim中拷贝些文字去浏览器搜索,都需要用鼠标选中vim的文字后,Ctrl+c.Ctrl+v,硬生生掐断了纯键盘 ...

  3. 深度技术32位Win7系统Ghost版2014年

    深度技术32位Win7系统Ghost版,GhostWin7是指使用Ghost软件做成压缩包的Windows7,俗称克隆版Win7.用克隆版的目的是节省安装时间.本作品在采用微软封装部署技术的基础上,结 ...

  4. 深度技术32位Win7系统Ghost版

    深度技术32位Win7系统Ghost版,GhostWin7是指使用Ghost软件做成压缩包的Windows7,俗称克隆版Win7.用克隆版的目的是节省安装时间.本作品在采用微软封装部署技术的基础上,结 ...

  5. 导师互选系统 Alpha版冲刺总结

    导师互选系统 Alpha版冲刺总结 一.设想和目标 我们的软件什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要是要实现导师和学生双向互选的功能.功能定义清晰明确,在软 ...

  6. Photoshop Cs5 64位系统破解版下载(内含破解方法)

    Photoshop Cs5 64位系统是电影.视频和多媒体领域的专业人士, 使用 3D 和动画的图形和 Web 设计人员, 以及工程和科学领域的专业人士的理想选择,下面提供Photoshop Cs5  ...

  7. 萝卜家园32位和64位Win7系统Ghost版

    新萝卜家园32位Win7系统Ghost版Sp1,官方旗舰版采用Windows7 SP1简体中文旗舰版32位(MSDN官方发布正式版原版ios镜像)制作,并能够完美自动激活,采用自由天空驱动包,解决部分 ...

  8. Swift - 访问通讯录联系人(使用系统提供的通讯录交互界面)

    1,通讯录访问介绍 通讯录(或叫地址簿,电话簿)是一个数据库,里面储存了联系人的相关信息.要实现访问通讯录有如下两种方式: (1)AddressBook.framework框架 : 没有界面,通过代码 ...

  9. MySQL+PHP配置 Windows系统IIS版

    MySQL+PHP配置 Windows系统IIS版 1.下载 MySQL下载地址:http://dev.mysql.com/downloads/mysql/5.1.html->Windows ( ...

随机推荐

  1. 小记一下递归通过id寻找一条链路的数据

    Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.sp ...

  2. 第50天学习打卡(CSS 圆角边框 盒子阴影 定位)

    4.4圆角边框 圆角边框:  <!DOCTYPE html> <html lang="en"> <head>     <meta char ...

  3. Android Layout属性

    通用属性 android:layout_height android:layout_width 值 含义 fill_parent/match_parent 高度或者宽度对齐到父控件 wrap_cont ...

  4. WEB容器开启、关闭OPTIONS方法

    发现 请求包随意,响应包信息如下: HTTP/1.1 200 OK Cache-Control: private Content-Type: text/html; charset=utf-8 Vary ...

  5. HDOJ-1358(字符串压缩+KMP)

    Period HDOJ-1358 这题还是属于KMP算法的应用,属于字符串压缩问题.也就是在一个字符串s中寻找一个前缀,使得s可以被一份或者多份前缀子串t拷贝连接,也就是串接. #include< ...

  6. 人脸识别分析小Demo

    人脸识别分析 调用 腾讯AI人脸识别接口 测试应用 纯py文件测试照片 # -*- coding: utf-8 -*- import json from tencentcloud.common imp ...

  7. Git 常用命令 和 安装

    这年头不会点git还真不能与别人进行代码交流 安装 windowns版下载:https://git-scm.com/download/win ,下载完成后就自己手动安装 ,很简单就不多说. Ubunt ...

  8. BurpSuite 一些小技巧

    拦截请求 设置不拦截下面的网站(记得保存项目,不然每次都要添加) .*\.?baidu.com|.*\.?google.com|.*\.?bcebos.com|.*\.?bdstatic.com|.* ...

  9. Centos mini系统下的Hadoop集群搭建

    1.事前了解 1.1 Hadoop 百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin Hadoop是一个由Apache基金会所开发 ...

  10. 关于 FreeBSD 老版本如何安装软件

    关于 FreeBSD 不被支持版本如何安装软件: ALLOW_UNSUPPORTED_SYSTEM=yes写到/etc/ make.conf ​​​​ 如果提示没有make.conf 请手动新建一个文 ...