防止Vim清除出口处的剪贴板

| 当我从终端打开Vim,将一些文本复制到系统剪贴板,然后退出Vim时,系统剪贴板被清除。 如何将复制的文本保留在剪贴板中?     
已邀请:
        综合超级用户的答案,只需将以下内容添加到您的“ 0”中
autocmd VimLeave * call system(\"xsel -ib\", getreg(\'+\'))
    
        安装Parcellite,或者为Gnome安装卡扣,为KDE安装klipper。 重新启动计算机或手动运行。 参见:https://wiki.ubuntu.com/ClipboardPersistence     
        根据Matt的回答,以下使用
xclip
代替
xsel
autocmd VimLeave * call system(\'echo \' . shellescape(getreg(\'+\')) . 
            \\ \' | xclip -selection clipboard\')
    
        我遇到了这个问题,还有一个相关的问题,即用ѭ5挂起vim也会清除剪贴板。我扩展了Matt的解决方案,以解决这两个问题:
set clipboard=unnamedplus

if executable(\"xsel\")

  function! PreserveClipboard()
    call system(\"xsel -ib\", getreg(\'+\'))
  endfunction

  function! PreserveClipboadAndSuspend()
    call PreserveClipboard()
    suspend
  endfunction

  autocmd VimLeave * call PreserveClipboard()
  nnoremap <silent> <c-z> :call PreserveClipboadAndSuspend()<cr>
  vnoremap <silent> <c-z> :<c-u>call PreserveClipboadAndSuspend()<cr>

endif
如果未安装
xsel
,则
if executable(\"xsel\")
护罩在那里,以避免发生错误。从正常模式暂停时,when9映射保留剪贴板,而从可视或选择模式暂停时,
vnoremap
映射处理。 我已经确认可以在vim 7.4和8.0上运行。     
        如果我错了,请纠正我,但以我对Vim的理解为准... 1)Vim使用寄存器而不是剪贴板来存储复制/剪切的数据。 2)这些寄存器在退出状态文件中的vim时会保留,但是在运行过程之外无法访问,除非您手动打开文件并检查其内容 3)在Vim运行时将内容保存到+注册,可以粘贴到其他应用程序。 4)通过挂起vim(CTRL-Z)而不是关闭它,这些寄存器仍然可以访问。 会提供协助吗?     
        根据马特的答案 使用他的方法时,复制多行时在粘贴时在行尾添加斜杠。 这应该补救。
autocmd VimLeave * exe \":!echo \" . shellescape(getreg(\'+\')) . \" | xclip -selection clipboard\"
当我将“ shellescape”与“ system”一起使用时,换行符不断逃脱。但这在我使用exe时没有发生。 不知道真正的原因。但这有效。     

要回复问题请先登录注册