vim与系统剪贴版的交互
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 参考
4.知乎-如何将 Vim 剪贴板里面的东西粘贴到 Vim 之外的地方
vim与系统剪贴版的交互的更多相关文章
- VIM 与 系统剪切版
1, 查看 vim 是否支持 clipboard 功能 $ vim --version | grep clipboard 2, 如果有 +clipboard 则跳过这一步; 如果显示的是 -clipb ...
- vim与系统剪切板之间的复制粘贴
背景 vim各种快捷建溜得飞起,然而与系统剪切板之间的复制粘贴一直都是我的痛. 每次需要从vim中拷贝些文字去浏览器搜索,都需要用鼠标选中vim的文字后,Ctrl+c.Ctrl+v,硬生生掐断了纯键盘 ...
- 深度技术32位Win7系统Ghost版2014年
深度技术32位Win7系统Ghost版,GhostWin7是指使用Ghost软件做成压缩包的Windows7,俗称克隆版Win7.用克隆版的目的是节省安装时间.本作品在采用微软封装部署技术的基础上,结 ...
- 深度技术32位Win7系统Ghost版
深度技术32位Win7系统Ghost版,GhostWin7是指使用Ghost软件做成压缩包的Windows7,俗称克隆版Win7.用克隆版的目的是节省安装时间.本作品在采用微软封装部署技术的基础上,结 ...
- 导师互选系统 Alpha版冲刺总结
导师互选系统 Alpha版冲刺总结 一.设想和目标 我们的软件什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要是要实现导师和学生双向互选的功能.功能定义清晰明确,在软 ...
- Photoshop Cs5 64位系统破解版下载(内含破解方法)
Photoshop Cs5 64位系统是电影.视频和多媒体领域的专业人士, 使用 3D 和动画的图形和 Web 设计人员, 以及工程和科学领域的专业人士的理想选择,下面提供Photoshop Cs5 ...
- 萝卜家园32位和64位Win7系统Ghost版
新萝卜家园32位Win7系统Ghost版Sp1,官方旗舰版采用Windows7 SP1简体中文旗舰版32位(MSDN官方发布正式版原版ios镜像)制作,并能够完美自动激活,采用自由天空驱动包,解决部分 ...
- Swift - 访问通讯录联系人(使用系统提供的通讯录交互界面)
1,通讯录访问介绍 通讯录(或叫地址簿,电话簿)是一个数据库,里面储存了联系人的相关信息.要实现访问通讯录有如下两种方式: (1)AddressBook.framework框架 : 没有界面,通过代码 ...
- MySQL+PHP配置 Windows系统IIS版
MySQL+PHP配置 Windows系统IIS版 1.下载 MySQL下载地址:http://dev.mysql.com/downloads/mysql/5.1.html->Windows ( ...
随机推荐
- 最小生成树---普里姆算法(Prim算法)和克鲁斯卡尔算法(Kruskal算法)
普里姆算法(Prim算法) #include<bits/stdc++.h> using namespace std; #define MAXVEX 100 #define INF 6553 ...
- now-go时间百宝箱
golang不像C#,Java这种高级语言,有丰富的语法糖供开发者很方便的调用.所以这便催生出很多的开源组件,通过使用这些第三方组件能够帮助我们在开发过程中少踩很多的坑. 时间处理是所有语言都要面对的 ...
- tomcat运行多个项目同一个端口与不同端口的设置
一.首先打包项目 这里采用eclipse开发工具,选中项目右击,点击Export进入 选择web下的 WAR file ,点击next 在这里可能有坑,新装的eclipse没有web文件夹 此时需要下 ...
- Vue学习笔记-API调试工具--->国产apipost按装(比postman好按装好用)
一 使用环境: windows 7 64位操作系统 二 Vue学习笔记-API调试工具--->apipost按装 1.下载: https://www.apipost.cn/ (比postm ...
- 零基础学Python:数据容器
1.常用操作 列表常用操作 在 ipython 中定义一个 列表,例如: l= list() 输入 l. 按下 TAB 键, ipython 会提示 字典 能够使用的函数如下: 可以到官方网址查询使用 ...
- Codeblocks支持语法着色
- 后端程序员之路 18、朴素贝叶斯模型(Naive Bayesian Model,NBM)
贝叶斯推断及其互联网应用(一):定理简介 - 阮一峰的网络日志http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.ht ...
- 2020年12月-第02阶段-前端基础-CSS Day04
1. 浮动(float) 记忆 能够说出 CSS 的布局的三种机制 理解 能够说出普通流在布局中的特点 能够说出我们为什么用浮动 能够说出我们为什么要清除浮动 应用 能够利用浮动完成导航栏案例 能够清 ...
- 2020年12月-第02阶段-前端基础-CSS Day03
CSS Day03 盒子模型(CSS重点) css学习三大重点: css 盒子模型 . 浮动 . 定位 主题思路: 理解: 1.能说出盒子模型有那四部分组成 2.能说出内边距的作用以及对盒子的影响 3 ...
- Elasticsearch核心技术(一):Elasticsearch环境搭建
磨刀不误砍柴工,要学习Elasticsearch,首先要搭建起来一套学习环境,本文为手把手教你在MacOS上面搭建Elasticsearch学习环境. 1.1 Elasticsearch安装 Elas ...