Vim笔记2(复制粘贴那些事儿)

Posted helloworldcoding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim笔记2(复制粘贴那些事儿)相关的知识,希望对你有一定的参考价值。

大部分同学,应该熟练复制粘贴(ctrl+c, ctrl+v)了。这个方便千万文字处理工作者的神技能归功于Evelyn Berezin,一位计算机的先驱,是她发明了这一功能。很可惜她在去年去世了(又是2018)。

不过在vim中,熟悉的快捷键都不能"正常"使用了,有时会有意想不到效果。比如 保存习惯性地保存文件ctrl+s,vim会直接”假死“(ctrl+q就可以解除);再比如习惯性的撤消ctrl+z,vim会被放到后台执行,给人的感觉是vim退出了,其实输入fg命令就可以把后台的进程掉到前台....总之,很多地方不太一样。


班门弄斧,我搬运来一些关于vim复制和粘贴的内容。如有错误,欢迎留言指出。

在vim中,删除delete(d)(也可以说是剪切)、复制yank(y)、粘贴put(p)

vim内部有很多寄存器("a-"z,无名寄存器"",复制专用寄存器("0),黑洞寄存器("_),系统剪贴板("+),选择专用寄存器("*),...),很好玩。

查看寄存器的内容,命令行模式输入reg 寄存器名称。如reg " 显示无名寄存器的内容; reg a 就显示"a寄存器;单独reg 就现实所有寄存器及其内容;

1.无名寄存器

dd  剪切当前行,把内容存入无名寄存器

yiw 复制一个单词到无名寄存器和"0寄存器

yy  复制当前行到无名寄存器和"0寄存器

x   剪切一个字符到无名寄存器

p   粘贴无名寄存器的内容,等价于 ""p

2.复制专用寄存器"0

当使用y{motion}命令时,复制的内容回拷贝到""和"0这两个寄存器中。

x,s,c{motion},d{motion} 不会覆盖"0寄存器

"0p 粘贴复制专用寄存器的内容

3.有名寄存器("a-"z)26个

"a寄存器 "ad{motion}(剪切)  "ay{motion}(复制) "ap(粘贴)

"b寄存器 "bd{motion}(剪切)  "by{motion}(复制) "bp(粘贴)

当有一段或这多段文本复制粘贴到多处时,有名寄存器就很有用了

4.黑洞寄存器"_

"_d{motion}, vim将删除改文本而且不会保存任何副本。 

只想删除文本,不想覆盖无名寄存器的内容。这算时vim真正的删除吧

5."*和"+寄存器   

在windows/Mac OS X下这两个寄存器没有差别,他们都代表系统的剪贴板。在unix/linux下,这两个是有区别的。

"+  X11剪贴板,用剪切、复制与粘贴命令操作

"*  X11主剪贴板,用鼠标中键操作(X11视窗系统支持primary的剪贴板,它保存着上次被选中的文本,可以用鼠标中键粘贴出来)

大部分时候,我们在vim把内容复制到系统剪贴板用"*y{motion} ,从系统剪贴板中复制内容到vim用"*p


有可能会出现是"*和"+不起作用的情况。vim --version |grep clipboard 如果返回 -clipboard则说明vim不支持剪贴板。

a.重新编译安装vim  -with-x

b.sudo apt install vim-gnome

然后 vim --version | grep clipboad 就应该可以得到 +clipboard


还有一点,当我们从系统中粘贴一段代码到vim中,可能会出现格式混乱的情况。这个时候在命令行模式下输入set paste,然后再粘贴。



参考资料:

  1. https://www.nytimes.com/2018/12/10/obituaries/evelyn-berezin-dead.html

  2. https://en.wikipedia.org/wiki/Evelyn_Berezin

  3. https://stackoverflow.com/questions/3961859/how-to-copy-to-clipboard-in-vim

  4. http://product.dangdang.com/24058798.html

以上是关于Vim笔记2(复制粘贴那些事儿)的主要内容,如果未能解决你的问题,请参考以下文章

《从零开始学Swift》学习笔记(Day 11)——数据类型那些事儿?

《从零开始学Swift》学习笔记(Day 22)——闭包那些事儿!

python笔记——类与对象的那些事儿

python笔记——类与对象的那些事儿

mac那些事儿

MySQL的那些事儿