2023年11月27日发(作者:)

vim的复制粘贴(包括系统剪贴板)

1vim常⽤复制粘贴命令

Vim的复制粘贴命令⽆疑是y (yank),p(paster),加上yyP

PS:

vim有个很有意思的约定(我觉得是⼀种约定),就是某个命令的⼤⼩写都是实现某种功能,只是⽅向不同,⽐如:

[plain]

1. w 跳转到下个wordW:跳转到上个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寄存器的内容粘贴到下⼀⾏

2vim的寄存器和系统剪贴板

寄存器简介

vim强⼤之处之⼀就是它⾃带⼀堆寄存器,每个寄存器独⽴使⽤,你可以在不同寄存器中存储不同数据,命令,你可以把这个想象成⼀个加

强版的剪贴板,当然它的功能不⽌剪贴板这么简单。如果你想看vim的官⽅⽂档有关部分:

[plain]

1. help registers

根据官⽅⼿册:vim9种寄存器

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就已经让⼈觉得很⿇烦了,这时候,vimmap功能就⼜可以⼤显神通了,我们只需要把“+y ”+gp map到你喜欢的

快捷键上即可:

⾸先打开vimrc(如果没有,请创建⼀个)

[plain]

1. vim ~/.vimrc

然后在其中输⼊:

[plain]

1. nmap "+gp

2. nmap "+y

你现在就可以使⽤ctrl+c ctrl+v 了,但是!我本⼈是不推荐⽤这个快捷键的,因为本⾝是我很常⽤的块命令

所以,我⼀般修改成:

[plain]

1. nmap v "+gp

2. nmap c "+y

⾄于是什么按键,就可以按照你的喜好来拉,我的是','

[plain]

1. let mapleader=","

ps.说⼀下,我⽤的是nmap,说明这个命令只有在normal情况下才⽣效,在insert模式下是不⽣效的,为什么要这样设置呢?因为有时候你

确实需要输⼊c/v的内容,⽐如,c ,v ,⽽且,vim主要操作我觉得还是应该在normal模式下,这才是vim的⾼效的原因。