vim的复制粘贴(包括系统剪贴板)
1、vim常⽤复制粘贴命令
Vim的复制粘贴命令⽆疑是y (yank),p(paster),加上yy,P
PS:
vim有个很有意思的约定(我觉得是⼀种约定),就是某个命令的⼤⼩写都是实现某种功能,只是⽅向不同,⽐如:
[plain]
1. w 跳转到下个word,W:跳转到上个word
2. f 某⾏正向查并跳转 F: 反向....
然后部分双写的字母有⾏操作:
[html]
1. yy 复制⼀⾏
2. dd 删除⼀⾏
所以,
[html]
1. p就是在当前光标后粘贴,P就是在当前光标前粘贴
另外,说完p,其实还有⼏个命令有时也是很有⽤的
[plain]
1. gp,和p的功能基本⼀致,只是粘贴完,它会把光标移动⾄粘贴内容之后;gP同理
2.
3. :pu[t] ,注意,这个是在命令界⾯输⼊的pu/put,它的意思是把x寄存器的内容粘贴到下⼀⾏
2、vim的寄存器和系统剪贴板
寄存器简介
vim强⼤之处之⼀就是它⾃带⼀堆寄存器,每个寄存器独⽴使⽤,你可以在不同寄存器中存储不同数据,命令,你可以把这个想象成⼀个加强版的剪贴板,当然它的功能不⽌剪贴板这么简单。如果你想看vim的官⽅⽂档有关部分:
[plain]
1. :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):"/,缓存最近的搜索模式。
⾄于每个寄存器更加具体的使⽤⽅法,我希望⼤家能查询⼿册,毕竟,这篇⽂章重点不在寄存器,可能哪天会写⼀篇⼩记讲讲寄存器吧
基本操作
聊聊寄存器的基本操作把
现在输⼊命令,你就可以查询⼀下⽬前寄存器的情况
[html]
1. :reg
寄存器的使⽤⽅法也很简单:通过“ 加上寄存器名,就可以访问特定的寄存器:
[html]
1. "ap 粘贴字母a寄存器内容
2. "1y 把选取内容复制到数字寄存器1
系统剪贴板
细⼼的⼈已经发现我重点标注的寄存器部分了,就是那个选择及拖拽寄存器,这就是系统的剪贴板,我们通常使⽤的ctrl+c ctrl+v 的内容就保存在这个寄存器中,所以你要把需要复制的内容放在+寄存器中,就可以在gui界⾯中⽤粘贴或ctrl+v粘贴了,同理,粘贴在vim中也⼀样
[html]
1. "+y 复制到系统剪贴板
2. "+p 粘贴
3. "+gp 粘贴并且移动光标到粘贴内容后
但是光是输⼊命令"+p就已经让⼈觉得很⿇烦了,这时候,vim的map功能就⼜可以⼤显神通了,我们只
需要把“+y 和 ”+gp map到你喜欢的快捷键上即可:
⾸先打开vimrc(如果没有,请创建⼀个)
[plain]
1. vim ~/.vimrc
然后在其中输⼊:
[plain]
1. nmap <c-v> "+gp
2. nmap <c-c> "+y
你现在就可以使⽤ctrl+c 和ctrl+v 了,但是!我本⼈是不推荐⽤这个快捷键的,因为本⾝<c-v>是我很常⽤的块命令
所以,我⼀般修改成:
[plain]
1. nmap <leader>v "+gp
2. nmap <leader>c "+y
vim命令复制一行⾄于<leader>是什么按键,就可以按照你的喜好来拉,我的是','
[plain]
1. let mapleader=","
ps.说⼀下,我⽤的是nmap,说明这个命令只有在normal情况下才⽣效,在insert模式下是不⽣效的,为什么要这样设置呢?因为有时候你确实需要输⼊<leader>c/v的内容,⽐如,c ,v ,⽽且,vim主要操作我觉得还是应该在normal模式下,这才是vim的⾼效的原因。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论