1 需求

系统复制粘贴主要是满足下面两个需求。

  • 在多个对象之间复制粘贴

    • vim窗口与vim窗口之间
    • 外部界面与vim窗口之间
  • 不变复制粘贴。从外部界面复制粘贴到vim窗口时,文本不发生任何变化。


2 vim寄存器

2.1 寄存器介绍

不得不介绍以下vim寄存器,它是复制粘贴的中间媒介。

在vim中通过以下命令能查看所有寄存器:

    :reg

vim包含以下寄存器:

寄存器名称 编号
匿名寄存器 ""
编号寄存器 "0 到 "9
小删除寄存器 "-
26个命名寄存器 "a 到 "z
3个只读寄存器 ": 和 ". 和 "%
Buffer交替文件寄存器 "#
表达式寄存器 "=
选区和拖放寄存器 "* 和 "+ 和 "~
黑洞寄存器 "_
搜索模式寄存器 "/

2.2 复制粘贴过程

从A对象到B对象的复制粘贴,其逻辑过程是:

  • 首先,将数据或文本从A对象复制到寄存器;
  • 然后,将数据或文本从寄存器复制到B对象。

注意:系统复制粘贴使用+寄存器。

2.3 "寄存器的启用

通过命令查看"寄存其是否启用。

    :reg

如果没看到+寄存器,说明未启用。这是需要安装vim-gtk。

    sudo apt-get install vim-gtk

安装完毕以后,再次检测+寄存器,这时会发现已启用。


3 复制粘贴操作

3.1 vim窗口与vim窗口之间

步骤如下:

  • 选择文本,使用"+y复制文本;
  • 定位到目的窗口然后,使用"+p粘贴文本。

3.2 从vim窗口到外部界面

步骤如下:

  • 选择文本,使用"+y复制文本;
  • 定位到外部界面后,使用右键粘贴或者外部软件自身的快捷键完成粘贴。

3.3 从外部界面到vim窗口

对于少量文本,步骤如下:

  • 在外部界面中,选择复制文本;
  • 进入vim窗口定位位置,使用"+p粘贴文本。

3.4 从外部界面到vim窗口(不变粘贴)

这种情况一般是复制大量文本,要求在粘贴过程中文本保证不变。

步骤如下:

  • 在外部界面中,选择复制文本;
  • 进入vim窗口定位位置,输入命令:
    :set paste

其目的是取消自动缩进等自动操作,避免文本发生不在期望中的变化。

  • 使用"+p粘贴文本。
  • 粘贴完成后,输入命令:
    :set nopaste

其目的是回复自动缩进的自动操作。

VIM系统复制粘贴的更多相关文章

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

    1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只 ...

  2. 【vim小小记】vim的复制粘贴(包括系统剪贴板)

    1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只 ...

  3. Vim中复制粘贴缩进错乱问题的解决方案

    Vim中复制粘贴缩进错乱问题的解决方案 当你把这段缩进优美的代码直接ctrl+c,ctrl+v到Vim的时候,就会出现如下恶心的情况 可以看到,这种直接粘贴的方式会导致代码丢失和缩进错乱等情况. 解决 ...

  4. 在LINUX终端和VIM下复制粘贴

    http://www.tinylab.org/linux-terminal-and-paste-copy-under-vim/ 在GUI界面下,我们可以很自由的复制粘贴.但是在字符界面下,我们不得不用 ...

  5. vim的复制粘贴小结

    vim帮助文档里与粘贴板有关的内容如下: vim有12个粘贴板,分别是0.1.2.….9.a.“.+:用:reg命令可以查看各个粘贴板里的内容.在vim中简单用y只是复制到“(双引号)粘贴板里,同样用 ...

  6. vim的复制粘贴小结(转)

    原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry 内容: 用vim这么久 了,始终也不知道怎么在vim中使 ...

  7. vim 的复制粘贴命令,以及使用寄存器来存放要复制的内容;

    一,y(yanks)复制,p(paste)粘贴: yy 复制当前行,2yy,复制2行: Y  复制整行:Y=yy; p 粘贴到光标后: P 粘贴到光标前: 注意vim会知道你复制内容的是整行还是一个矩 ...

  8. 【vim】复制粘贴相关操作

    复制: 首先,可以在命令模式下输入v进入自由选取模式,选择需要剪切的文字后,按下d就可以进行剪切了. 其他命令模式下剪切命令: yy:复制当前行 nyy:n表示大于1的数字,复制n行 yw:从光标处复 ...

  9. iOS 应用内的系统复制粘贴菜单显示的语言非中文

    在应用的 Info.plist 文件中添加以下代码: <key>CFBundleLocalizations</key> <array> <string> ...

随机推荐

  1. 【洛谷P2756】飞行员配对方案问题

    题目大意:二分图匹配裸题. 题解:用网络流进行处理. 找配对方案的时候,采用遍历二分图左边的每个节点,找到不与源点相连,且正向边权值为 0,反向边权值为 1 的边,输出即可. 代码如下 #includ ...

  2. 洛谷P1066 2^k进制数(题解)(递推版)

    https://www.luogu.org/problemnew/show/P1066(题目传送) (题解)https://www.luogu.org/problemnew/solution/P106 ...

  3. APP 后台学习笔记

    1.APP后台功能: 远程存储数据.消息中转 2.架构是业务驱动,可能随着开发进程而变化,没有最完美架构 3.架构不要满足追求技术新奇酷炫,而是结合具体业务使用合适的技术,否则会给运维带来很多不必要的 ...

  4. 可变字符串类 StringBuilder

    string类创建的字符串是不可变的(同一内存中),每更改一次,就会新开辟内存,不利于高效频繁操作. 当频繁操作同一字符串变量时,建议使用StringBuilder. 可变字符串类StringBuil ...

  5. 【tensorflow】学习笔记

    1.tensorflow中dynamic_rnn和rnn有什么区别?    在tensorflow中没有找到rnn这个方法难道是废弃掉了? rnn是静态图,比如有10个时间序列,那么它将全部展开,并且 ...

  6. Gcc 命令大全

    gcc这条命令用来将源代码生成可执行程序,下面来看一下gcc的常用选项. 1.无选项编译链接 例:命令:gcc test.c //会默认生成a.out可执行程序 2.-E: 进行预处理和编译,生成汇编 ...

  7. 2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...

  8. Jenkins_安装

    1.下载war包 wget -c -O ./jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war 2.启动下载好的wa ...

  9. APICloud学习第二天——操作云数据库

    //连接apicloud云数据库 var model=api.require('model'); model.config({ appId: 'A6008558346855', appKey: '60 ...

  10. 计算机网络之iframe内联框架跨域

    iframe框架同源下的数据调用 iframe框架非同源下的数据传输 一.iframe框架同源下的数据调用 1.父窗口向子窗口获取数据 //html1父级窗口 <iframe src=" ...