vim系统剪切板
原文地址
1、vim常用复制粘贴命令
Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P
PS:
vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只是方向不同,比如:
- w 跳转到下个word,W:跳转到上个word
- f 某行正向查找并跳转 F: 反向....
然后部分双写的字母有行操作:
- yy 复制一行
- dd 删除一行
所以,
- p就是在当前光标后粘贴,P就是在当前光标前粘贴
另外,说完p,其实还有几个命令有时也是很有用的
- gp,和p的功能基本一致,只是粘贴完,它会把光标移动至粘贴内容之后;gP同理
- :pu[t] ,注意,这个是在命令界面输入的pu/put,它的意思是把x寄存器的内容粘贴到下一行
2、vim的寄存器和系统剪贴板
寄存器简介
vim强大之处之一就是它自带一堆寄存器,每个寄存器独立使用,你可以在不同寄存器中存储不同数据,命令,你可以把这个想象成一个加强版的剪贴板,当然它的功能不止剪贴板这么简单。如果你想看vim的官方文档有关部分:
- :help registers
根据官方手册:vim有9种寄存器
There are nine types of registers: registers E354
1. The unnamed register ""
2. 10 numbered registers "0 to "9
3. The small delete register "-
4. 26 named registers "a to "z or "A to "Z
5. four read-only registers ":, "., "% and "#
6. the expression register "=
7. The selection and drop registers "*, "+ and "~
8. The black hole register "_
9. Last search pattern register "/
1.无名(unnamed)寄存器:"",缓存最后一次操作内容;
2.数字(numbered)寄存器:"0 ~"9,缓存最近操作内容,复制与删除有别, "0寄存器缓存最近一次复制的内容,"1-"9缓存最近9次删除内容
3.行内删除(small delete)寄存器:"-,缓存行内删除内容;
4.具名(named)寄存器:"a ~ "z或"A - "0Z,指定时可用;
5.只读(read-only)寄存器:":,".,"%,"#,分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名;
6.表达式(expression)寄存器:"=,只读,用于执行表达式命令;
7.选择及拖拽(selection and drop)寄存器:"*,"+,"~,存取GUI选择文本,可用于与外部应用交互,使用前提为系统剪切板(clipboard)可用;
8.黑洞(black hole)寄存器:"_,不缓存操作内容(干净删除);
9.模式寄存器(last search pattern):"/,缓存最近的搜索模式。
至于每个寄存器更加具体的使用方法,我希望大家能查询手册,毕竟,这篇文章重点不在寄存器,可能哪天会写一篇小记讲讲寄存器吧
基本操作
聊聊寄存器的基本操作把
现在输入命令,你就可以查询一下目前寄存器的情况
- :reg
寄存器的使用方法也很简单:通过“ 加上 寄存器名,就可以访问特定的寄存器:
- "ap 粘贴字母a寄存器内容
- "1y 把选取内容复制到数字寄存器1
系统剪贴板
细心的人已经发现我重点标注的寄存器部分了,就是那个选择及拖拽寄存器,这就是系统的剪贴板,我们通常使用的ctrl+c ctrl+v 的内容就保存在这个寄存器中,所以你要把需要复制的内容放在+寄存器中,就可以在gui界面中用粘贴或ctrl+v粘贴了,同理,粘贴在vim中也一样
- "+y 复制到系统剪贴板
- "+p 粘贴
- "+gp 粘贴并且移动光标到粘贴内容后
但是光是输入命令"+p就已经让人觉得很麻烦了,这时候,vim的map功能就又可以大显神通了,我们只需要把“+y 和 ”+gp map到你喜欢的快捷键上即可:
首先打开vimrc(如果没有,请创建一个)
- vim ~/.vimrc
然后在其中输入:
- nmap <c-v> "+gp
- nmap <c-c> "+y
你现在就可以使用ctrl+c 和ctrl+v 了,但是!我本人是不推荐用这个快捷键的,因为本身<c-v>是我很常用的块命令
所以,我一般修改成:
- nmap <leader>v "+gp
- nmap <leader>c "+y
至于<leader>是什么按键,就可以按照你的喜好来拉,我的是','
- let mapleader=","
ps.说一下,我用的是nmap,说明这个命令只有在normal情况下才生效,在insert模式下是不生效的,为什么要这样设置呢?因为有时候你确实需要输入<leader>c/v的内容,比如,c ,v ,而且,vim主要操作我觉得还是应该在normal模式下,这才是vim的高效的原因。
vim系统剪切板的更多相关文章
- Linux下Vim编辑器访问系统剪切板
默认情况下VIM使用的是内置的寄存器,而不是X Window的剪切板 启用系统剪切板支持 可以使用vim --version | grep clipboard查看,若clipboard前显示-标记,而 ...
- vim与系统剪切板之间的复制粘贴
背景 vim各种快捷建溜得飞起,然而与系统剪切板之间的复制粘贴一直都是我的痛. 每次需要从vim中拷贝些文字去浏览器搜索,都需要用鼠标选中vim的文字后,Ctrl+c.Ctrl+v,硬生生掐断了纯键盘 ...
- Chrome浏览器读写系统剪切板
IE浏览器支持直接读写剪切板内容: window.clipboardData.clearData(); window.clipboardData.setData('Text', 'abcd'); 但是 ...
- Android系统剪切板
Android系统剪贴板 复制字符串到系统剪切板 /** * 复制文本到剪切板 * * @param text * @return */ @SuppressWarnings("depreca ...
- vi中系统剪切板的设置
在vi中,如果编译时没有clipboard属性,将vi中的内容拷贝到系统剪切板有些麻烦.可以用如下的方法,查看vi 是否支持系统剪切板的功能: xt@xt-ThinkPad-X220:~$ vi -- ...
- wpf 复制/剪切到本地系统剪切板中以供右键粘贴用
原文:wpf 复制/剪切到本地系统剪切板中以供右键粘贴用 http://www.cnblogs.com/yhdkzy/archive/2012/11/27/2790655.html /// & ...
- Winform中实现将照片剪贴到系统剪切板中(附代码下载)
场景 效果 点击剪切按钮 点击粘贴按钮 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免 ...
- Android实例-如何使用系统剪切板(XE8+小米2)
结果: 发现个问题,就是粘贴时会清除之前的信息. unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, S ...
- VsCode中vim插件剪切板等问题
剪切板共享 这个挺重要的,否则每次右键菜单复制粘贴会奔溃的. 在用户设置中添加: "vim.useSystemClipboard": true, 光标的变化 我觉得这个也重要,毕竟 ...
随机推荐
- js事件冒泡、阻止事件冒泡以及阻止默认行为
事件冒泡 当事件发生后,这个事件就要开始传播(从里到外或者从外向里).为什么要传播呢?因为事件源本身(可能)并没有处理事件的能力,即处理事件的函数(方法)并未绑定在该事件源上.例如我们点击一个按钮时, ...
- MySQL数据库数据类型以及INT(M)的含义
nt(M)我们先来拆分,int是代表整型数据那么中间的M应该是代表多少位了,后来查mysql手册也得知了我的理解是正确的,下面我来举例说明. MySQL 数据类型中的 integer types ...
- HashMap 的实现原理(1.7)
参考 :http://wiki.jikexueyuan.com/project/java-collection/hashmap.html https://blog.csdn.net/w22981192 ...
- java 判断5张牌的组成
题目: 一副牌中发五张扑克牌给你,判断是四条,三带二.三带一加一.两对.一对.顺子.还是什么都不是. 控制台输入: 1,1,1,1,2 示例输出: 四条 Java方法的代码: static Strin ...
- python _str_方法
_str_方法: 使用:如: class Car: def __init__(self,newWheelNum,newColor): self.wheelNum=newWheelNum self.co ...
- mysql:You can't specify target table 'sessions' for update in FROM clause
更新数据时,在where条件子句里面如果想使用子查询按条件更新部分数据,需要将查询的结果设为临时表.可以参考: https://blog.csdn.net/poetssociety/article/d ...
- 好好理解一下python的函数和python的缩进
缩进相当于其他语言的括号,括号中的语句才是一起执行的 这一个函数的功能应该是计算平均分 所以d这个dict应该是作为参数传进来的,而不是写到函数内部 正确的写法 d = { 'Adam': 95, ' ...
- 磁盘IO过高时的参考
主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大的话,是数据库,可以进行读写分离或者分库 ...
- Vue结合后台的增删改案例
首先列表内容还是与之前的列表内容类似,不过此处我们会采用Vue中数据请求的方式来实现数据的增删.那么我们使用的Vue第三方组件就是vue-resource,vue发起请求的方式与jQuery的ajax ...
- Java设计模式:23种设计模式全面解析(超级详细)
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性.稳健性以及安全性的解决方案. 1995 ...