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

vim复制与粘贴

vim写代码时,经常遇到这样的场景,复制多⾏,然后粘贴。

这样做:

1. 将光标移动到要复制的⽂本开始的地⽅,按进⼊可视模式。

v

2. 将光标移动到要复制的⽂本的结束的地⽅,按y复制。此时vim会⾃动将光标定位到选中⽂本的开始的地⽅,并退出可视模式。

3. 移动光标到⽂本结束的地⽅,按粘贴。

p

⼀、多⾏

dd

删除⼀⾏

ndd

删除以当前⾏开始的n

dw

删除以当前字符开始的⼀个字符

ndw

删除以当前字符开始的n个字符

d$D

删除以当前字符开始的⼀⾏字符

d)

删除到下⼀句的开始

d}

删除到下⼀段的开始

d回车

删除2

⼆、复制多⾏

任务:将第9⾏⾄第15⾏的数据,复制到第16

⽅法1:(强烈推荐)

915 copy 16 915 co 16

由此可有:

915 move 16 :9,15 m 16 将第9⾏到第15⾏的⽂本内容到第16⾏的后⾯

⽅法2

光标移动到结束⾏,ma

光标移动到起始⾏,输⼊y'a

光标移动到需要复制的⾏,输⼊p,⾏前复制则输⼊⼤写P

⽅法3

把光标移到第9 shift + v

再把光标移动到第15 ctrl + c

再把光标死去到第16 p mysql

⽅法4

光标移动到起始⾏,输⼊ma

光标移动到结束⾏,输⼊mb

光标移动到粘贴⾏,输⼊mc

然后输⼊:'a,'b, co 'c co换成m就是剪切

若要删除多⾏,则输⼊:'a,'b de

vi设置⾃动缩进:set smartindent

vi设置显⽰⾏号:set number set nu

Vim中如何全选并复制

全部删除:按esc后,然后dG

全部复制:按esc后,然后ggyG

全选⾼亮显⽰:按esc后,然后ggvG或者ggVG

vim如何与剪贴板交互(将vim的内容复制出来)

习惯了在windows环境各个应⽤程序之间如UltraEdit,记事本,eclipse之间ctrl+c,ctrl+v进⾏复制粘贴的你,如何在vim与别的windows应⽤

程序之间拷贝粘贴呢?

当然你可以在vim⾥选择⽤⿏标,选中⼀块⽂字然后右键复制,再到应⽤程序⾥ctrl+v粘贴,只不过这样效率就差多了。

更好的做法是,在vim中使⽤ "*y 使⽤进⾏复制,然后在应⽤程序中⽤ctrl+v粘贴。

更好的做法是,在vim中使⽤ "*y 使⽤进⾏复制,然后在应⽤程序中⽤ctrl+v粘贴。

从应⽤程序到vim则在应⽤程序中使⽤ctrl+c复制,在vim中使⽤shift+insert粘贴

如:

"*yy复制⼀⾏

"*y2w复制⼆个词

……

实现的原理是:

" 表⽰使⽤寄存器

"* 表⽰使⽤当前选择区

我个⼈推荐使⽤ctrl+insert复制,shift+insert粘贴。

vim有多个剪贴板,其中就包括了系统剪贴板。使⽤命令:reg可以看到各个剪贴板的内容。其中“”表⽰当前使⽤的剪贴板,“0-9是历史剪贴

板,“#就是系统剪贴板了(你可以在系统⾥拷贝⼀些东西,看是不是会出现在“#剪贴板⾥)。在vim中使⽤y可以把内容拷贝到“”号剪贴板,

继续y会把新的东西放⼊“”,⽽原来“”的东西就会被压⼊“0-9的各个历史剪贴板中。X11系统下还有⼀个“*的剪贴板对应中键拷贝粘

贴,windows不知道有没有。

解决第⼀个问题:

“+y 把选中内容拷贝到”+号剪贴板,即系统剪贴板

“+p 把系统剪贴板的内容粘贴到vim,这⼀个⽤shift+insert也可完成

解决第⼆个问题:

“0p 可以把已经被挤到”0剪贴板的内容A重新粘贴出来

嫌长的做⼀个map,映射到某个功能键或组合就⽅便了。