vim各类快捷建溜得飞起,然而与系统剪切板之间的复制粘贴一直都是个人痛。git
每次须要从vim中拷贝些文字去浏览器搜索,都须要用鼠标选中vim的文字后,Ctrl+c
、Ctrl+v
,硬生生掐断了纯键盘的流畅感github
并且,vim中的块选择多爽,若是只想要拷贝某一个块的数据,鼠标操做就彻底没辙了express
忍无可忍,无需再忍,今天就完全解决这个问题vim
本章参考自 NearXDU的博客浏览器
确认vim编辑器是否支持clipboard特性缓存
[GMPY@16:33 ~]$ vim --version| grep "clipboard"
支持这特性的检索结果应该包含 +clipboard
,而不支持则会是 -clipboard
编辑器
若是不支持怎么办?安装新的vim吧。能够参考这边文章 从源码安装vimui
本章参考自 rainysia的博客.net
vim会有一些存储空间来暂存内容,vim中将这些存储空间叫寄存器。此寄存器非咱们硬件所说的寄存器,能够理解为是一种cache。code
例如咱们在vim中y
操做复制的内容,实际就是暂存到寄存器中。
怎么查看寄存器内容呢?在vim中执行
:reg
在vim中,这些寄存器也有好几个
表示符号 | 名称 | 做用 |
---|---|---|
"" |
无名(unnamed)寄存器 | 缓存最后一次操做内容 |
"0 ~ "9 |
数字(numbered)寄存器 | 缓存最近操做内容,复制与删除有别,"0 寄存器缓存最近一次复制的内容,"1 -"9 缓存最近9次删除内容 |
"- |
行内删除(small delete)寄存器 | 缓存行内删除内容 |
“a ~ "z 或"A - ”Z |
具名(named)寄存器 | 可用于主动指定 |
": , ". , "% , "# |
只读(read-only)寄存器 | 分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名 |
"= |
表达式(expression)寄存器 | 用于执行表达式命令 |
"* , "+ , "~ |
选择及拖拽(selection and drop)寄存器 | 存取GUI选择文本,可用于与外部应用交互 |
"_ |
黑洞(black hole)寄存器 | 不缓存操做内容(干净删除) |
"/ |
模式寄存器(last search pattern) | 缓存最近的搜索模式 |
为了要与系统的剪切板交互,咱们着重关注"*
和"+
在vim中进入visual视图后使用"Ny(N表示特定寄存器编好),将内容复制到特定的剪切板
所以,若是要把数据从vim拷贝到系统剪切板,咱们只须要在visual模式下执行
"+y
注意的是,是 双引号 + 加号寄存器 + y。经过这命令copy后就能够去浏览器Ctrl+v啦
若是从浏览器Ctrl+c后,要粘贴到vim中,则须要
"+p
"*
和"+
有什么差异呢?
"*
是在系统剪切板中表示选择的内容
"+
是在系统剪切板中表示选择后Ctrl+c复制的内容
"+y和"+p的输入挺麻烦的,咱们直接为他们建立个快捷键吧
vim建立快捷键的原理能够看 jalused的博客
我使用的快捷键以下
" 支持在Visual模式下,经过C-y复制到系统剪切板 vnoremap <C-y> "+y " 支持在normal模式下,经过C-p粘贴系统剪切板 nnoremap <C-p> "*p
将上面的内容copy到~/.vimrc中便可生效,效果就是: