vim的复制粘贴(包括系统剪贴板)
1、vim常用复制粘贴命令
Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P
PS:
vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只是方向不同,比如:
- w 跳转到下个word,W:跳转到上个word
- f 某行正向查找并跳转 F: 反向....
w 跳转到下个word,W:跳转到上个word
f 某行正向查找并跳转 F: 反向....
然后部分双写的字母有行操作:
- yy 复制一行
- dd 删除一行
yy 复制一行
dd 删除一行
所以,
- p就是在当前光标后粘贴,P就是在当前光标前粘贴
p就是在当前光标后粘贴,P就是在当前光标前粘贴
另外,说完p,其实还有几个命令有时也是很有用的
- gp,和p的功能基本一致,只是粘贴完,它会把光标移动至粘贴内容之后;gP同理
- :pu[t] ,注意,这个是在命令界面输入的pu/put,它的意思是把x寄存器的内容粘贴到下一行
gp,和p的功能基本一致,只是粘贴完,它会把光标移动至粘贴内容之后;gP同理 :pu[t] ,注意,这个是在命令界面输入的pu/put,它的意思是把x寄存器的内容粘贴到下一行
2、vim的寄存器和系统剪贴板
寄存器简介
vim强大之处之一就是它自带一堆寄存器,每个寄存器独立使用,你可以在不同寄存器中存储不同数据,命令,你可以把这个想象成一个加强版的剪贴板,当然它的功能不止剪贴板这么简单。如果你想看vim的官方文档有关部分:
- :help registers
: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
:reg
寄存器的使用方法也很简单:通过“ 加上 寄存器名,就可以访问特定的寄存器:
- "ap 粘贴字母a寄存器内容
- "1y 把选取内容复制到数字寄存器1
"ap 粘贴字母a寄存器内容
"1y 把选取内容复制到数字寄存器1
系统剪贴板
细心的人已经发现我重点标注的寄存器部分了,就是那个选择及拖拽寄存器,这就是系统的剪贴板,我们通常使用的ctrl+c ctrl+v 的内容就保存在这个寄存器中,所以你要把需要复制的内容放在+寄存器中,就可以在gui界面中用粘贴或ctrl+v粘贴了,同理,粘贴在vim中也一样
- "+y 复制到系统剪贴板
- "+p 粘贴
- "+gp 粘贴并且移动光标到粘贴内容后
"+y 复制到系统剪贴板
"+p 粘贴
"+gp 粘贴并且移动光标到粘贴内容后
但是光是输入命令"+p就已经让人觉得很麻烦了,这时候,vim的map功能就又可以大显神通了,我们只需要把“+y 和 ”+gp map到你喜欢的快捷键上即可:
首先打开vimrc(如果没有,请创建一个)
- vim ~/.vimrc
vim ~/.vimrc
然后在其中输入:
- nmap <c-v> "+gp
- nmap <c-c> "+y
nmap <c-v> "+gp
nmap <c-c> "+y
你现在就可以使用ctrl+c 和ctrl+v 了,但是!我本人是不推荐用这个快捷键的,因为本身<c-v>是我很常用的块命令
所以,我一般修改成:
- nmap <leader>v "+gp
- nmap <leader>c "+y
nmap <leader>v "+gp
nmap <leader>c "+y
至于<leader>是什么按键,就可以按照你的喜好来拉,我的是','
- let mapleader=","
let mapleader=","
ps.说一下,我用的是nmap,说明这个命令只有在normal情况下才生效,在insert模式下是不生效的,为什么要这样设置呢?因为有时候你确实需要输入<leader>c/v的内容,比如,c ,v ,而且,vim主要操作我觉得还是应该在normal模式下,这才是vim的高效的原因。
vim的复制粘贴(包括系统剪贴板)的更多相关文章
- 【vim小小记】vim的复制粘贴(包括系统剪贴板)
1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只 ...
- Vim中复制粘贴缩进错乱问题的解决方案
Vim中复制粘贴缩进错乱问题的解决方案 当你把这段缩进优美的代码直接ctrl+c,ctrl+v到Vim的时候,就会出现如下恶心的情况 可以看到,这种直接粘贴的方式会导致代码丢失和缩进错乱等情况. 解决 ...
- 在LINUX终端和VIM下复制粘贴
http://www.tinylab.org/linux-terminal-and-paste-copy-under-vim/ 在GUI界面下,我们可以很自由的复制粘贴.但是在字符界面下,我们不得不用 ...
- VIM系统复制粘贴
1 需求 系统复制粘贴主要是满足下面两个需求. 在多个对象之间复制粘贴 vim窗口与vim窗口之间 外部界面与vim窗口之间 不变复制粘贴.从外部界面复制粘贴到vim窗口时,文本不发生任何变化. 2 ...
- vim的复制粘贴小结
vim帮助文档里与粘贴板有关的内容如下: vim有12个粘贴板,分别是0.1.2.….9.a.“.+:用:reg命令可以查看各个粘贴板里的内容.在vim中简单用y只是复制到“(双引号)粘贴板里,同样用 ...
- vim的复制粘贴小结(转)
原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry 内容: 用vim这么久 了,始终也不知道怎么在vim中使 ...
- vim 的复制粘贴命令,以及使用寄存器来存放要复制的内容;
一,y(yanks)复制,p(paste)粘贴: yy 复制当前行,2yy,复制2行: Y 复制整行:Y=yy; p 粘贴到光标后: P 粘贴到光标前: 注意vim会知道你复制内容的是整行还是一个矩 ...
- 【vim】复制粘贴相关操作
复制: 首先,可以在命令模式下输入v进入自由选取模式,选择需要剪切的文字后,按下d就可以进行剪切了. 其他命令模式下剪切命令: yy:复制当前行 nyy:n表示大于1的数字,复制n行 yw:从光标处复 ...
- Jq将字符串复制粘贴到剪贴板
第一种: 自己测试时 只适合于input 和textarea 但是针对于其他标签的复制就不能用了.代码如下: <!DOCTYPE html> <html> <head ...
随机推荐
- python之可迭代对象
1. 可迭代对象是什么? 字面意思分析:可以重复的迭代的实实在在的东西 专业角度: 内部含有'__iter__'方法的对象,就是可迭代对象 2. 可迭代对象都有什么? list,dict(keys() ...
- Linux-Mysql8.0
Mysql8.0.12 基本操作 解释 命令 安装服务端 yum install mysql-community-server 启动 service mysqld start/restart 停止 s ...
- NodeJS基础API-path相关的问题basename,extname,dirname,parse,format,sep,delimiter,win32,posix
path 参考文档:http://nodejs.cn/api/path.html const {normalize} = require('path'); // ES6语法 // 相当于 const ...
- 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡
========================================================================================== 一.基础介绍 == ...
- 前端之bootstrap
一.响应式介绍 众所周知,电脑.平板.手机的屏幕是差距很大的,假如在电脑上写好了一个页面,在电脑上看起来不错,但是如果放到手机上的话,那可能就会乱的一塌糊涂,这时候怎么解决呢?以前,可以再专门为手机定 ...
- python基础之文件处理总结
读文件: with open('contacts.txt', 'r', encoding='utf-8') as f: data = f.read() 二进制模式读 使用场景:网络传输(视频.图片或进 ...
- STM32的IAP方案
from: http://bbs.eeworld.com.cn/thread-294115-1-1.html 几乎所有的同类书籍都介绍综合性的应用示例如“万年历 + 温度显示 + 闹钟响铃 + 计 ...
- 关于.ascx
.ascx用户控件 参考系列教程User controls in asp.net - Part 104 用户控件包含了html.代码和其他Web或者用户控件的组合,并在Web服务器上以自己的文件格式 ...
- 使用fio测试磁盘I/O性能
简介: fio是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, nu ...
- python基础学习笔记——网络编程(协议篇)
一 互联网的本质 咱们先不说互联网是如何通信的(发送数据,文件等),先用一个经典的例子,给大家说明什么是互联网通信. 现在追溯到八九十年代,当时电话刚刚兴起,还没有手机的概念,只是有线电话,那么此时你 ...