vim Paste and Copy Problem!!!!!

        在Linux下怎么把vim的东西copy到系统剪切板确实迷惑吧???那个ctrl+v ctrl+c在vim里面彻底失灵!不同于Windows,Linux系统里存在两个剪切板:一个叫做选择缓冲区(X11 selection buffer),另一个才是剪切板(clipboard)。但是选择缓冲区是实时的,当使用鼠标或键盘选择内容时,内容已经存在于选择缓冲区了,这或许就是选择缓冲区的由来吧。

但是我们知道vim里面有个寄存器的概念(这要是不知道,那你赶紧补补vim基础概念的意思)那我们就可以在vim命令模式下输入

:reg
来查看linux系统各个剪切板里的内容

其中注意两个特殊的寄存器:”* 和 “+。这两个寄存器是和系统相通的,前者关联系统选择缓冲区,后者关联系统剪切板。通过它们可以和其他程序进行数据交换。

在vim中简单用y只是复制到""(两个双引号)寄存器里,同样用p粘贴的也是这个寄存器里的内容。比如 “+ 寄存器里面的东西就无法简单用p粘贴到vim中,所以在VISUAL模式下,按p是不能把系统剪切板里的内容拷贝到VIM中的。

那么怎么在VIM中要怎么使用系统剪切版里的东西呢?其实也是很简单的!VIM在insert模式下, 按Shift+Insert可以直接把系统剪切版里的内容拷贝到VIM中,也就是寄存器 [ “+ ] 里的东西。如果你不想要["+]寄存器里面的东西,那你也可以在normal模式下,按【寄存器+p】来粘贴对应寄存器里面的东西。

如果insert 模式下想把VIM内的东西拷贝到外面去 要使用命令

"+y 或  imap <C-S-c> "+y

意思是把选定的内容 yank到 寄存器 【 “+ 】 中,这对应就是系统中的剪切版。 (这个寄存器的名字可以根据自己,不过【"+】是剪切板默认的寄存器哦哦,后面那是一种映射

vim中的复制

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

这里首先要打开鼠标模式

:set mouse=a 
这样在普通模式下可以直接使用鼠标选择区域复制到选择缓冲区。

但这种情况下不能复制到剪切板。若要使用鼠标复制内容到剪切板,则需要做如下设置

:set mouse=v 

这种情况下,除了可以像上面一样直接使用鼠标选择区域复制到选择缓冲区以外,还可以在右键菜单中选择“复制”来保存到剪切板里。

但新问题又出来了。若显示行号,也会将行号一并选择。你会想到,这好办呀,如果不需要行号的话,在复制前,先执行setnonu来取消行号显示呗。其实没必要这样,如果不需要复制行号的话,在可视模式下用键盘来选择不就可以吗?并且,从上面的讨论,我们不难得出,使用选择缓冲区比使用剪切板要方便的多,可以节省很多步骤。

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

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

~/.vimrc中增加如下一行

: set mouse=v

复制内容到选择缓冲区。

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

    不要行号,使用“*nyy复制n行(此处寄存器可以改变)或可视模式下选择。

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

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

: set clipboard = unnamed

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


注意:在这里,只有vim.gtk或vim.gnome才能使用系统全局粘贴板,默认的vim.basic看不到+号寄存器。安装vim.gnome使用apt-get install vim-gnome,然后vim自动会链接到vim.gnome。

下面附上vim常用寄存器,也可以在命令行模式下输入reg来查询
vim常用的寄存器:
‘”‘     无名寄存器,包含最近删除或抽出的文本
‘%’     当前文件名
‘#’     轮换文件名
‘*’     剪贴板内容 (X11: 主选择)
‘+’     剪贴板内容
‘/’     最近的搜索模式
‘:’     最近的命令行
‘.’     最近插入的文本
‘-’     最近的行内 (少于一行) 删除
‘=’     表达式寄存器;你会被提示输入一个表达式




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值