Vim 剪贴板里面的东西 粘贴到系统粘贴板?

2种场景: 本机ssh到远程机器 相似: ssh到远程电脑,vim中复制内容到本地剪切板? - 知乎 https://www.zhihu.com/qu…
关注者
297
被浏览
472,058
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

这个回答本来是我不经意间的一次回答,没想到会收到这么多赞同(最多了一次了,哈哈)。回过头看一下,这个回答也不是很全面,评论中也提出了一些建议,这里我重新整理一下这个回答,之前的回答依然保留。


Vim 中的复制、删除的内容都会被存放到默认(未命名)寄存器中,之后可以通过粘贴操作读取默认寄存器中的内容。寄存器是完成这一过程的中转站,Vim 支持的寄存器非常多,其中常用的有 a-zA-Z0-9+“。其中:

  • 0-9:表示数字寄存器,是 Vim 用来保存最近复制、删除等操作的内容,其中 0 号寄存器保存的是最近一次的操作内容。
  • a-zA-Z:表示用户寄存器,Vim 不会读写这部分寄存器
    • "(单个双引号):未命名的寄存器,是 Vim 的默认寄存器,例如删除、复制等操作的内容都会被保存到这里。
    • +:剪切板寄存器,关联系统剪切板,保存在这个寄存器中的内容可以被系统其他程序访问,也可以通过这个寄存器访问其他程序保存到剪切板中的内容。

    如果想了解更多寄存器内容,可参vimdoc.sourceforge.net/


    通过下面命令可以查看所有寄存器中的内容,也可以只查看指定寄存器的内容(将寄存器名称作为参数)

    :reg [register_name] 

    有了上面的基础知识后,要实现题主"将 Vim 剪贴板里面的东西粘贴到 Vim 之外的地方?"就很明了,只需要将内容复制到剪切板寄存器(+)中即可,其他程序便可以访问到了。


    "+yy  // 复制当前行到剪切板
    "+p   // 将剪切板内容粘贴到光标后面
    "ayy  // 复制当前行到寄存器 a
    "ap   // 将寄存器 a 中的内容粘贴到光标后面
    

    ---------------------------------- 2016-03-05 旧的回答 -------------------------------------------


    Vim 有12个粘贴板依次编号为:0、1、2、...、9、a、"、+,其中 + 号为系统粘贴板,” 为临时粘贴板。系统剪切板中的内容可在其他程序中使用。上面的复制指令都可以配合剪切板进行操作。

    "nyw 复制当前单词到 n 号剪切板(双引号开始)
    "np 粘贴 n 号剪切板内容到当前位置后
    "+Y 复制当前行到系统剪切板
    "+nY 复制当前行往下 n 行到系统剪切板
    "+p 粘贴系统剪切板内容到当前位置后