不同于Windows,Linux系统里存在两个剪切板:一个叫做选择缓冲区(X11 selection buffer),另一个才是剪切板(clipboard)。

选择缓冲区是实时的,当使用鼠标或键盘选择内容时,内容已经存在于选择缓冲区了,这或许就是选择缓冲区的由来吧。

使用下面的命令查看选择缓冲区的内容::

$ xclip -out

如果没有xclip命令,Debian/Ubuntu下可以通过如下命令安装::

$ sudo apt-get install xclip

可以使用鼠标中键或键入Shift+Insert来粘贴选择缓冲区的内容。但对于有些GUI程序,比如gedit,只能通过鼠标中键调用选择缓冲区的内容,使用Shift+Insert的话,调用的是剪切板的内容。

剪切板和Windows的剪切板类似,在选择文字内容后,执行Ctrl + c或在菜单里选择‘复制’的话,这时内容才存放到剪切板里。

使用下面的命令查看剪切板的内容::

$ xclip -out -sel clipboard

而使用剪切板的内容,则是Ctrl+v。 但在有些情况下,比如gnome-terminal,不能直接使用Ctrl+c,Ctrl+v,这时就要用Shift+Ctrl+c,Shift+Ctrl+v代替。

原格式粘贴

好了,了解了选择缓冲区和剪切板,下面就是实现保留格式粘贴的完美解决方案:

方案一:

选择文本内容

vim普通模式下按 “*p 将选择缓冲区中内容粘贴进来

方案二:

复制文件内容

vim普通模式下按 “+ p 将剪切板内容粘贴进来

这时,如果要复制的内容也是vim编辑器中的内容,那么如何复制才更方便呢?

vim中的复制

vim有一个可视模式(Visual Mode),在此模式下可以选择区域。可以在普通模式下键入v进入可视模式,也可以个性化一点,键入V进入行可视模式,或者键入Ctrl+v进入列可视模 式。这时移动光标就可以选择内容了。注意这时被选内容已经实时保存于选择缓冲区了,当然你也可以键入”+y将此内容也保存到剪切板里,或者”ay将内容保 存到标签为a的寄存器中。但要知道,只有前两个中的内容可以在其他程序中使用,而a寄存器中的内容只能在该vim编辑器内使用。

也可以通过鼠标来复制。这里首先要打开鼠标模式。:

:set mouse=a

这样在普通模式下可以直接使用鼠标选择区域复制到选择缓冲区。但这种情况下不能复制到剪切板。

若要使用鼠标复制内容到剪切板,则需要做如下设置::

:set mouse=v

这种情况下,除了可以像上面一样直接使用鼠标选择区域复制到选择缓冲区以外,还可以在右键菜单中选择“复制”来保存到剪切板里。但新问题又出来了。 若显示行号,也会将行号一并选择。你会想到,这好办呀,如果不需要行号的话,在复制前,先执行set nonu来取消行号显示呗。

其实没必要这样,如果不需要复制行号的话,用在可视模式下用键盘来选择不就可以吗?

并且,从上面的讨论,我们不难得出,使用选择缓冲区比使用剪切板要方便的多,可以节省很多步骤。

所以,最终我们得到了vim文件间复制粘贴的完美方案,文件传输的中转使用选择缓冲区。

vim文件间复制粘贴完美方案

在~/.vimrc中增加如下一行:: set mouse=v

复制内容到选择缓冲区。

带行号时,使用鼠标选择内容区域。

不要行号,使用 “*yny 复制n行或可视模式下选择。

将选择缓冲区中内容粘贴到vim文件:普通模式下按 “*p 。

补充:

设置vim中默认使用选择缓冲区寄存器 “*:

set clipboard = unnamed

则可以直接通过y,p和系统选择缓冲区进行数据交换。

linux vim 粘贴 没有保持原来的格式,linux中的剪贴板用法,实现vim中原格式粘贴...相关推荐

  1. linux 字符串加入中括号,方括号及其在命令行中的不同用法介绍

    通配 方括号最简单的用法就是通配.你可能在知道"Globbing"这个概念之前就已经通过通配来匹配内容了,列出具有相同特征的多个文件就是一个很常见的场景,例如列出所有 JPEG 文 ...

  2. oracle 天转换成月函数_oracle中to_date详细用法示例(oracle日期格式转换)

    TO_DATE格式(以时间:2007-11-02 13:45:25为例) 1. 日期和字符转换函数用法(to_date,to_char) select to_char(sysdate,'yyyy-mm ...

  3. php json 转 xml格式,PHP中如何将JSON文件转XML格式

    首先获取JSON文件中的字符:$content = file_get_contents('./data.json'); 然后使用函数"json_decode()"函数将字符串转为数 ...

  4. matlab中triangle函数用法,matlab triangle函数格式

    匿名用户 1级 2016-07-27 回答 pulstran(t,d,p,fs,w)其中t是时间,d为函数偏移(如y = func(t-d(1)) + func(t-d(2)) + ... ):p是函 ...

  5. Linux 桌面玩家指南:02. 以最简洁的方式打造实用的 Vim 环境

    原文:Linux 桌面玩家指南:02. 以最简洁的方式打造实用的 Vim 环境 特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标 ...

  6. linux虚拟环境tmux,关于在Linux系统中如何把tmux和vim打造成IDE的讲解

    不经意间我们又来到了Linux系统文章的学习,在众多学习中,我们的文章也许不起眼,但是想必大家都有很多问题吧,所以重要的下面我们就来讲解一下,大家一定要认真看奥!! 在Linux系统中tmux 和 v ...

  7. linux 的基本命令格式,Linux学习之路(一)命令基本格式

    据统计Linxu里面能够识别的命令超过3000个,而我们常用的Linux基本命令在60个左右.常用命令是我们必须掌握的命令,需要我们多练习才能记住,最起码要敲3遍以上. 简单的把常用命令分为以下几大类 ...

  8. Linux中的工具使用【vim的存活级】

    Linux中的工具使用 工具: 1.程序的开发 1.1 软硬件的安装(yum) 功能:安装/卸载软件 指令(根目录):yum install app/yum removu app 指令(普通用户):s ...

  9. linux如何更改服务器时间格式,Linux中date命令,格式化输出,时间设置

    date命令的帮助信息 [root@localhost source]# date --help 用法:date [选项]...[+格式] 或:date [-u|--utc|--universal] ...

最新文章

  1. 递归/回溯:八皇后问题N-Queens
  2. Leangoo看板协作工具“免费版”和“企业版”差异
  3. Prefactoring——Guidelines
  4. Java 16 正式发布!你还学得动吗?
  5. 移动端HTML5video视频播放优化实践
  6. Linux find指令
  7. 【iOS-Cocos2d游戏开发之二十】精灵的基础知识点总汇(位图操作/贴图更换/重排z轴等)以及利用CCSprite与CCLayerColor制作简单遮盖层!...
  8. 因果关系和相关关系 大数据_数据科学中的相关性与因果关系
  9. IS-IS(笔记整理)
  10. fiddler基础入门
  11. JSP笔记——7.自定义标签
  12. 6.Solr4.10.3API使用(CURD)
  13. 计算机主板纽扣电池缺电,主板的纽扣电池没电了怎么更换
  14. 【URL重写】IIS7配置URL重写
  15. 赴日IT派遣,如何避免入坑
  16. 声韵启蒙(1)-(清)车万育
  17. 如何使用Kumo Java Word Cloud?
  18. 如何正确的设置使用代理IP?
  19. 在 MarkDown 中添加表格(例如:在 CSDN 中添加表格)
  20. macOS如何给idea安装ja-netfilter插件

热门文章

  1. 用python实现websocket请求遇到的问题及解决方法。
  2. 3个方法解决百度网盘限速 (2018-07-20)
  3. windows连接远程服务器报错‘SSH‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件 解决方案
  4. 如何使用内联onclick属性停止事件传播?
  5. 如何重置/删除chrome的输入突出显示/焦点边框? [重复]
  6. git merge和git merge --no-ff有什么区别?
  7. 有效电子邮件地址的最大长度是多少?
  8. 如何在JavaScript中将字符串的首字母大写?
  9. java并发常量_Java并发编程-常量对象(七)
  10. 全国二级 mysql有用_2020年全国计算机二级MySQL复习知识点:调整服务器