1 概述

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

2 暴力解决

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

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

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

没错就是简单粗暴。

3 优雅的方案

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

3.1 查看剪贴板支持

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

vim --version | grep clipboard



如果有

+clipboard

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

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



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

sudo apt install vim-gtk

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

alias vi='vimx'
alias vim='vimx'

MacOS:

sudo brew install vim

3.2 系统剪贴板复制到vim

很简单,使用

"+p

"*p

即可,vim提供了

+ *

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

+

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

*

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

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

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

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

"+y

"*y

即可。

3.4 偷懒方法

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

set clipboard=unnamed

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

set clipboard=unnamedplus

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

4 寄存器相关知识

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

:reg

查看寄存器的内容,使用

:help registers

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

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

比如

"a4yy
"+p

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

4.1 未命名寄存器

""

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

4.2 编号寄存器

"0
"1
...
"9

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

"0

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

"1
...
"9

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

"1

上上次的被存放在

"2

以此类推。

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

"1

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

"ayy

不会写入到

"0

中,但是

"add

会写入到

"1

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

4.3 小删除寄存器

"-

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

"0

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

4.4 命名寄存器

"a
"b
...

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

iostream
string
cmath

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

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

其中

{ESC}

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

2@a

即可在剩余两行加上include。

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

"Ayy

可以向

"a

追加内容。

4.5 只读寄存器

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

共三个,只读。

4.6 交替文件寄存器

"#

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

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

:w

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

4.7 表达式寄存器

"=

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

4.8 选择拖放寄存器

上面已经介绍了两个:

"+
"*

还有一个是

"~

其中

"+
"*

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

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

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

"~

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

4.9 黑洞寄存器

"_

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

4.10 搜索寄存器

"/

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

:let @/ = "123"

下一次搜索可直接

/

不输入关键词回车即可。

注意不存在

"?

寄存器。

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. SSL (Secure Sockets Layer)

    本文转载自SSL (Secure Sockets Layer) TLS简介 The Transport Layer Security (TLS) protocol aims primarily to ...

  2. mac 下如何轻松安装神器 Anaconda

    本文推荐使用homebrew 安装 1.打开终端执行 brew cask install anaconda3 然后就可以喝一杯咖啡了,终端会自动执行安装好 如果终端卡在update homebrew ...

  3. Ubuntu的点滴-Vim、VM Tools、Samba、换源

    <div id="article_content" class="article_content clearfix"> <link rel=& ...

  4. 剑指 Offer 67. 把字符串转换成整数 + 字符串

    剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...

  5. JVM笔记 -- JVM经历了什么?

    Sun Classic VM 世界上第一款商用 Java 虚拟机,JDK1.4 已经淘汰. 内部只有解释器,可以自己外挂JIT编译器,但是二者只能使用其一,不能配合工作. hotspot 内置了该虚拟 ...

  6. 去哪找Java练手项目?

    经常有读者在微信上问我: 在学编程的过程中,看了不少书.视频课程,但是看完.听完之后感觉还是不会编程,想找一些项目来练手,但是不知道去哪儿找? 类似的问题,有不少读者问,估计是大部分人的困惑. 练手项 ...

  7. Python字典与集合

    一 字典创建.访问.添加.删除.修改.内建函数.内建方法 创建,列表不能作为键,因为键不能变?字典也不能作为键 dict1 = {} dict2 = {'name':'qq','sex':'male' ...

  8. 数数字(JAVA语言)

    package 第三章习题; /*  * 把前n(n<=10000)个整数顺次写在一起:  * 89101112...  * 数一数0-9各出现多少次  * (输出10个整数,分别是09出现的次 ...

  9. ImportError: No module named site

    cmd中执行python提示:ImportError: No module named site 运行python.exe Fatal Python error: initfsencoding: un ...

  10. 设计模式—singleton(单例模式)

    单例模式 单例设计模式属于创建型模式,它提供了一种创建对象的最佳方式.这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建. 这个类提供了一种访问其唯一的对象的方式,可以直接 ...